![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
文章平均质量分 79
车斗
这个作者很懒,什么都没留下…
展开
-
在 VS 上开如何发使用 Mingw64 的 DLL
在 VS 上开如何发使用 Mingw64 的 DLL系统要求Win10 上安装了 VS2015, msys2 (mingw64 + gtk) (参考 https://blog.csdn.net/ubuntu64fan/article/details/117959904)VS 上开发跨平台的窗口程序使用了 gtk (libgtk-3-0.dll),这个可以在 mingw64 的目录下找到。我的:C:\DEVPACK\msys64\mingw64\bin这个目录下的所有 dll 都是需要的。其中我的原创 2021-08-20 14:28:04 · 985 阅读 · 0 评论 -
URL 解析极简版
URL 解析极简版网上找了很多,要么太复杂,要么有BUG。我写了一个解析URL的代码,从头到尾不分配内存,只有一个头文件:urlcodec.h。/*** @file urlcodec.h* @brief url encode and decode* https://www.bejson.com/enc/urlencode/* @author zhang* @version* @date 2021* @note* @since 2015*/#ifndef URL_CODEC_IN原创 2021-08-17 17:58:59 · 318 阅读 · 0 评论 -
Hello WebAsm:第一个WebAssembly例子
Hello WebAsm:第一个WebAssembly例子概述让浏览器能运行C语言程序,这个想法新奇而大胆。这就是 WebAssembly。它具有以下优点:高效WebAssembly 有一套完整的语义,实际上 wasm 是体积小且加载快的二进制格式, 其目标就是充分发挥硬件能力以达到原生执行效率。安全WebAssembly 运行在一个沙箱化的执行环境中,甚至可以在现有的 JavaScript 虚拟机中实现。在web环境中,WebAssembly将会严格遵守同源策略以及浏览器安全策略。原创 2021-08-10 18:33:55 · 2110 阅读 · 0 评论 -
Linux 和 Windows 上编译 proj.4 库
Linux 上编译 proj.4 库在 centos7 上测试成功PROJPROJ is a generic coordinate transformation software that transforms geospatial coordinates from one coordinate reference system (CRS) to another. This includes cartographic projections as well as geodetic transforma原创 2021-08-09 14:11:50 · 1215 阅读 · 0 评论 -
笔记:关于链接库那点事儿
笔记:关于链接库那点事儿2021年7月31日根据《程序员的自我修养-链接、装载与库(潘爱民著)》整理1)总线。北桥:高速设备(内存,缓存,CPU,PCIbridge)。南桥:低速设备(磁盘,USB,键盘,鼠标)。2)内存。增加中间曾层,内存映射,地址隔离,分段,分页。3)线程。程序执行最小单元:线程ID,指令指针,寄存器集合,堆栈。线程三种状态:运行,就绪,等待Linux Task:fork:复制当前进程,只产生本任务的镜像exec:使用新的可执行镜像覆盖当前的镜像cl原创 2021-08-02 11:05:06 · 333 阅读 · 0 评论 -
比较几个 C 语言协程实现
极简 C 语言协程实现coroutine.h作者:https://www.chiark.greenend.org.uk/~sgtatham/coroutines.html这个是用宏方式实现的。用于对资源紧张的客户端。protothreads另外一个可选的协程实现是 protothreads (pt):http://dunkels.com/adam/download/pt-1.4.tar.gzstate-threads这些用在客户端都合适,极轻量级,跨windows/linux/arm平原创 2021-07-15 18:11:20 · 1200 阅读 · 0 评论 -
C 语言调用 JNI_CreateJavaVM
C 语言调用 JNI_CreateJavaVM环境:win10 + vs2015 + jdk-8u171-windows-x64.zip假设我们已经存在了 C/C++ 语言的动态库clib.dll,如果想从 java 语言调用此动态库clib.dll,需要写个供 java 调用的C/C++的JNI动态库: clib_jniwrapper.dll,clib_jniwrapper.dll 桥接了从Java(JNIWrapper)对象到C/C++对象(clib.dll)的转换。 然后再写个 java 类如:原创 2021-07-06 14:12:46 · 1983 阅读 · 0 评论 -
跨平台调试的 C/C++ 语言项目
clibclib C API 是一个可以跨平台调试的 C语言静态库,动态库和调用程序的示例项目。示例项目由下面的命令行自动生成:$ cd pytools/tools/$ gen_project.py --project=clibAuthor: zhangDate: 2021-06-30 14:32:59Refer: https://blog.csdn.net/ubuntu64fan/article/details/106689478Download: https://github.com/p原创 2021-06-30 14:44:30 · 392 阅读 · 0 评论 -
Win10 上使用 MSYS 开发 Android NDK 程序
https://www.jianshu.com/p/40fa9c8df0bc#comments安装 MSYShttps://www.msys2.org/msys2-x86_64-20210604.exe$ pacman -Syu$ pacman -Su$ pacman -S --needed base-devel mingw-w64-x86_64-toolchain$ pacman -S zip$ pacman -S git下载 NDKhttps://develo原创 2021-06-16 16:04:16 · 817 阅读 · 0 评论 -
图计算库 igraph 在 windows 10 上的编译安装
图计算库 igraph 在 windows 10 上的安装参考:https://igraph.org/c/doc/igraph-Installation.html#igraph-Installation-general-build-instructions前提win10 家庭版 + vs2017 社区免费版 (C/C++)cmake-3.20.2 (https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2原创 2021-05-18 18:45:20 · 1873 阅读 · 4 评论 -
utarray 用于指针(对象)数组
utarray 用于C指针(或对象)数组http://troydhanson.github.io/uthash/utarray.html用 utarray 把 C 指针(或对象)保存在数组中,可动态扩充,查找,删除。非常方便。假设如下定义对象:typedef struct MyObject_t{ /* name[]内存布局: [5,'C','H','I','N','A','\0'] */ char name[64];} *MyObject;用 utarray 保.原创 2020-12-22 13:03:13 · 751 阅读 · 0 评论 -
C语言宏的妙用
C语言宏的妙用C程序的编译分为预处理,编译,汇编,链接4个阶段。预处理会展开所有的宏。宏的强大在于可以构造各种语法糖,精简代码,不但使代码看起来更简洁优雅,而且没有任何执行成本(不同于函数)。举个例子,我们要创建A对象,然而在创建A对象时,可能需要创建a1,a2,a3,a4,a5,…等各种对象。只有全部a(i)对象创建成功,A才算成功。例如下面的代码(code1):// code1.cint createAobject (A * pA){a1 = create_obj();a2 = create原创 2020-05-11 12:13:33 · 548 阅读 · 0 评论 -
VSCode配置编译MSVC程序高级示例
VSCode配置编译MSVC程序示例本文讲解了如何把一个VisualStudio C++(VC)项目转为VSCode(VSC)项目,并使用MSVC编译。MSVC编译一个程序分为编译(cl.exe)和链接(link.exe)的过程。有时候还需要生成静态库或动态库(lib.exe)。如果我们使用VC,这些过程是在背后运作的,如果使用VSC,则不得不了解这些命令行背后运作的机理。本文的示例代码 fi...原创 2020-02-28 16:48:50 · 1258 阅读 · 0 评论 -
VSCode使用mingw编译C/C++程序
VSCode使用mingw编译C/C++程序通常我们使用MSVC(cl.exe)编译C/C++源代码程序,运行在Windows上,此外我们还可以使用mingw提供的GCC+GDB编译C/C++源代码,生成原生的Win32程序,运行在Windows平台上。本文参考下面的文档实践:在Windows x64平台上,用VSCode开发C/C++程序,用GCC编译器编译成Win32的exe,运行在Wind...原创 2020-02-27 15:00:54 · 2154 阅读 · 0 评论 -
VSCode配置编译MSVC程序
VSCode配置编译MSVC程序本文来自于以下链接的实践:Configure VS Code for Microsoft C++前言自从盘古开天辟地以来,乱世纷争,群雄并起。在编程IDE领域,各路豪杰争霸,互不相让。直是乱花渐欲迷人眼,何处是归途?所谓天下大势,分久必合。微软乃上顺天意,下聚人心,兼相爱,交相利。于是,VSCode横空出世,利刃出鞘,魑魅魍魉,片甲不留。一时间,各路豪杰避之...原创 2020-02-25 17:19:46 · 1353 阅读 · 0 评论 -
一个无锁多线程安全的ring buffer实现
一个无锁多线程安全的ring buffer实现跨平台,无锁,多线程读写安全,测试通过。ringbuf.h/*********************************************************************** * Copyright (c) 2008-2080 pepstack.com, 350137278@qq.com * * ALL ...原创 2019-12-27 18:49:09 · 2270 阅读 · 0 评论 -
libevent 结合 pthread-win32 在windows 平台上的使用
libevent 结合 pthread-win32 在windows 平台上的使用libevent 在windows 平台上的使用,大致过程是:1)WSAStartup2)evthread_use_windows_threads3)event_base_new4)WSACleanup其中,1)WSAStartup一定要调用,否则3)调用不成功。如果windows的程序使用了...原创 2019-11-26 11:43:14 · 709 阅读 · 0 评论 -
一个leveldb C api的包装
一个leveldb C api的包装在 C 中调用 leveldb,把繁琐隐藏起来。提供了一个高级的 API 接口。如下的调用方式: LeveldbCtx dbctx; if (LeveldbCtxCreate("C:\\Temp\\test.cachedb", LDBCTX_ACCESSMODE_ALL, LDBCTX_OFLAG_CREATE_IF_MISSING, -...原创 2019-11-14 19:05:23 · 613 阅读 · 0 评论 -
一个跨平台的线程读写锁
一个跨平台的线程读写锁不废话,直接上代码:/*********************************************************************** * Copyright (c) 2008-2080 350137278@qq.com * * ALL RIGHTS RESERVED. * * Redistribution and us...原创 2019-11-14 18:49:20 · 570 阅读 · 0 评论 -
C实现的跨平台的线程池
C实现的跨平台的线程池绝对原创!线程池(threadpool)是这样的一种设施,初始化创建指定数目的线程,然后动态添加任务(task)到线程池的任务队列中(queue),线程池自动挑选一个线程工作者(worker)去执行这个任务(执行任务的函数在添加任务时由用户指定)。我花了半天时间,把以前的跨平台的线程池(threadpool.c)改造了一下,支持:1)Windows+vs201...原创 2019-11-12 16:00:00 · 623 阅读 · 0 评论 -
布隆过滤器C语言代码
布隆过滤器C语言代码bloom filter 基本概念由布隆(Burton Howard Bloom)在1970年提出的。它实际上是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率(假正例False positives,即Bloom Filter报告某一元素存在于某集合中,但...原创 2019-10-22 14:54:46 · 1761 阅读 · 0 评论 -
CryptoPP 使用方法
Crypto++ 使用方法 ——长时间以来,没增加新文章!凡所增加,必属原创。2007-7-24 0 引言为阅读本文,读者需要具备密码学最基本的知识,如:对称加密和非对称加密、数字签名等。还好,准备这些知识,一个下午的时间就足够了。许多朋友问我如何使用CryptoPP(目前最新版本为5.4),我以前也没用过,但一直觉得是个好东西,属于经典的C++库之一。因此,有必要把它原创 2007-07-24 11:42:00 · 11866 阅读 · 12 评论 -
关于几何关系的代码说明
关于几何关系的代码说明很多朋友需要这方面的资料,尤其是代码。我在陆续挖掘和整理的过程中,推翻了自己的开源的设想,形成了一个库——cgal32.dll(win32版,标准C库)。一、这是基于几个原因:1、库中个别地方代码采用了非商业开源的代码。我没有权利去公开它们。2、只有不开源,我写的库大家才能免费使用。免除大家在道德和法律上面临的风险。3、我做了大量工作,使自己本身免除道德原创 2007-09-11 14:20:00 · 2663 阅读 · 2 评论 -
一个UUID生成算法的C语言实现 --- WIN32版本
一个UUID生成算法的C语言实现——WIN32版本 cheungmine2007-9-16 根据定义,UUID(Universally Unique IDentifier,也称GUID)在时间和空间都是唯一的。为保证空间的唯一性,每个UUID使用了一个48位的值来记录,一般是计算机的网卡地址。为保证时间上的唯一性,每个UUID具有一个60位的时间戳(timestamp)。原创 2007-09-17 11:05:00 · 13105 阅读 · 8 评论 -
一个简单的HashMap C语言实现
一个简单的HashMap C语言实现cheungmine 用C语言实现一个简单实用的hashmap,具有一定的实际意义。尤其我们不想使用STL里面的map类的时候。我实现的这个hashmap,用来做key---value的映射,key必须是有效的字符串,value是调用者分配的任意类型的数据。这个hashmap适合在一些简单的场合下,消耗极少的资源。首先定义头文件如下: /原创 2007-11-20 10:38:00 · 33206 阅读 · 3 评论 -
C语言实现一个简单的单向链表list
C语言实现一个简单的单向链表listcheungmine用C语言实现一个简单实用的单向链表list,具有一定的实际意义。尤其我们不想使用STL里面的list类的时候。我实现的这个list,结点存储任何调用者分配的任意类型的数据(void*)。这个list适用于一些简单的场合,消耗极少的资源。 头文件: /* * list.h * Generic sequent原创 2007-11-20 10:44:00 · 16224 阅读 · 4 评论 -
C语言实现一个四叉树quadtree
C语言实现一个四叉树quadtreecheungmine 用C语言实现一个2维四叉树quadtree,具有一定的实际意义。你可以把几何图形的索引(用long型的id标识)放到这个树中(根据最小边界矩形)。quadtree可以用来快速区域查找图形,虽然不是那么精确,但是毕竟没有漏掉的。虽然quadtree的效率不如RTree?但是RTree的实现毕竟复杂了些,我会尽快收集整理出RTree的代原创 2007-11-20 11:22:00 · 10135 阅读 · 5 评论 -
RTree源代码——C语言实现
RTree源代码——C语言实现cheungmine一、什么是RTree“R树是B树向多维空间发展的另一种形式,它将空间对象按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中存储其所有子结点的区域范围,非叶结点的所有子结点的区域都落在它的区域范围之内;叶结点的磁盘页中存储其区域范围之内的所有空间对象的外接矩形。每个结点所能拥有的子结点数目有上、下限,下限保证对磁盘空间的有原创 2007-11-22 17:04:00 · 22276 阅读 · 27 评论 -
基于Oracle OCI的数据访问C语言接口ORADBI
基于Oracle OCI的数据访问C语言接口ORADBIcheungmine@gmail.comMar. 22, 2008 ORADBI是我在Oracle OCI(Oracle 调用接口)基础上开发的,支持Oracle8i、9i、10g等数据库。根据Oracle公司的介绍:OCI是如此可靠,以至于Oracle数据库中的每一条SQL语句都通过OCI来执行。当应用程序开原创 2008-04-01 21:57:00 · 5172 阅读 · 6 评论 -
Windows下如何使用BOOST C++库
Windows下如何使用BOOST C++库cheungmine@gmail.com2008-7-10 我采用的是VC8.0和boost_1_35_0。自己重新编译boost当然可以,但是我使用了http://www.boostpro.com/products/free 提供的安装工具 BoostPro 1.35.0 Installer (192K .exe) 。我强烈原创 2008-07-10 19:44:00 · 11707 阅读 · 3 评论 -
list.c - A linked list by C --- C语言实现的单向链表
C语言实现的单向链表 list.c - A linked list by Ccheungmine@gmail.com(本文不提供任何保障。因此,您应充分考虑使用本文的代码给您带来的风险。您不能声明对本文的代码的所有权,但是您用于任何目的之前都不需要告知我。)这是我实现的C语言单向链表。单向链表很简单,可以存储任意类型的数据:整型、字符串或指针类型。但是,不要混存。除整型外,链表节点原创 2008-07-18 23:51:00 · 4472 阅读 · 1 评论 -
神经网络: 计算简单的加法
神经网络: 计算简单的加法下面是完整的代码:// // fann_test.c : // FANN 测试 // // 到下面的网站下载FANN库: // Fast Artificial Neural Network Library (fann) // http://leenissen.dk/fann/ // 下载链接: Download F原创 2008-08-26 15:54:00 · 4885 阅读 · 2 评论 -
如何在oracle的blob字段里保存多个文件
如何在oracle的blob字段里保存多个文件cheungmine@gmail.com Oracle的BLOB字段类型可以用来保存长2进制数据。但是通常读写BLOB字段数据的代码都是很罗嗦,非细心编码很容易出错。我把这个功能集成到我的OCI包装库(ORADBI)中。下面的例子就是演示如何使用ORADBI把多个文件按保存到一个字段里。 我在另外的例子中将演示如何把BLOB字段中的原创 2008-08-27 11:19:00 · 2997 阅读 · 2 评论 -
如何读取Oracle的BLOB字段里的文件
如何读取Oracle的BLOB字段里的文件cheungmine@gmail.com 下载源码:http://download.csdn.net/source/589896 使用ORADBI读取存储在BLOB字段里的多个文件,并还原到指定的路径下。下面是完整的代码: // // read_blobfile.c - 读BLOBFILE的例子原创 2008-08-27 11:27:00 · 3337 阅读 · 2 评论 -
东进的语音卡编程:最简单的电话外呼程序
东进的语音卡编程:最简单的电话外呼程序cheungmine2008-6-23 整个工程是Console程序,它对D081A进行编程,实现一个最简单的电话外呼程序:CallTest.exe。工程包含3个文件: CallTest.cpp和LRTimer.h、LRTimer.cpp。 后2个文件是一个C++的定时器类。这里没有使用Windows自带的定时器。Call原创 2008-06-23 18:47:00 · 8469 阅读 · 7 评论 -
RGB和HSL颜色转换
RGB和HSL颜色转换cheungmine//// 下面的代码完成颜色转换:RGBHSL。注意它们的分量的取值范围。// cheungmine 收集整理//#include "stdafx.h"#define min3v(v1, v2, v3) ((v1)>(v2)? ((v2)>(v3)?(v3):(v2)):((v1)>(v3)?(v3)原创 2008-06-26 00:24:00 · 14476 阅读 · 10 评论 -
如何在WINDOWS下编译BOOST C++库
如何在WINDOWS下编译BOOST C++库cheungmine2008-6-25 写出来,怕自己以后忘记了,也为初学者参考。使用VC8.0和boost1.35.0。 1)下载boosthttp://www.boost.org/users/download/这是它的下载页面,需要下载2个东西:Packaged ReleasesVERSION 1.35.原创 2008-06-25 18:18:00 · 10279 阅读 · 3 评论 -
An example of lib3ds 2.0 with opengl32
lib3ds 2.0 和 opengl32 例子程序cheungmine2009-2-13 本例使用lib3ds库读取3ds文件,并使用opengl绘制。本例不使用贴图,仅仅展示lib3ds2.0的使用过程。这个例子是用lib3ds1.2.0的一个例子的翻版。lib3ds1.2.0已经找不到了。所以,我提供这个2.0版本的例子,以供学习之用。 需要下载lib3ds2.0原创 2009-02-13 23:43:00 · 6314 阅读 · 6 评论 -
一段 CryptAPI 取得 证书序列号 的代码
CryptAPI 取得 证书序列号 的操作 cheungmine 通过Win32 CryptAPI查找个人证书库(MY)中的指定的证书的序列号。显示之。证书的序列号经过处理,和IE中显示的一样(只是人为地去掉了空格)。 // 去除指定字符// 下面的代码用于字符串替换static char* trim(char *str, char chr){ return (原创 2009-02-24 13:37:00 · 3640 阅读 · 0 评论 -
WINAPI 编程获取文件版本信息
WINAPI 编程获取文件版本信息cheungmine本文演示如何使用win32 api 编写获得文件描述和产品版本。很简单的小程序。下面就是全部代码:test.c//// test.c// by cheungmine//#include #include #define DLLFILE "C://WINDOWS//system32//aaaamon.dll"原创 2009-04-15 13:01:00 · 4973 阅读 · 4 评论