C++
砖厂码农
主要从事分布式架构和分布式数据库相关工作。大数据、机器学习、微服务、云原生、区块链均有所涉略。
展开
-
dll的动态加载
dll的动态加载 dll的加载方式有两种:隐式链接和动态加载。隐式链接,需要包含头文件,引用.lib文件才能使用导出函数。动态加载,直接使用LoadLibrary加载所需的动态库,然后指定所需的导出函数。一般情况下,两种方式都是可行的。如果我们没有头文件和.lib文件,只有dll,使用第二种方法是比较通用的作法。举例如下: 现有test.dll,有如下一些导出函数:原创 2012-11-26 21:25:19 · 627 阅读 · 0 评论 -
linux 原子操作
#define __xchg_op(x, ptr) \ ({ \ \ __typeof(*(ptr)) __ret = (x); \ switch (sizeof(*(ptr))) { \ \ case 1: \ asm vo原创 2017-03-21 10:52:38 · 359 阅读 · 0 评论 -
跨语言调用FFI
函数调用约定与CPU架构和操作系统有关,涉及到跨语言调用时最好了解一下。常见函数调用约定,参考1,参考2,参考3。 四年前做 erlang调用C++的时候,由于各个系统下的函数调用约定涉及到的函数压栈不同,我需要为同一个功能在不同操作系统下写三份代码(主要时函数声明和调用约定的不同)。后来无意中搜索到 libffi,只需要按函数声明的参数顺序及类型传参,真正实现了一份代码,到处编译。 ffi ...原创 2019-07-12 11:11:46 · 879 阅读 · 0 评论