随笔分类 - 动态库学习
摘要:1.使用vs的dumpbin工具 dumpbin.exe /LINKERMEMBER xxx.lib 选项: (1)、/ALL :此选项显示除代码反汇编外的所有可用信息。使用/DISASM显示反汇编。可以与/ALL一起使用/RAWDATA:NONE来省略文件的原始二进制详细资料。 (2)、/ARCH
阅读全文
摘要:1.C语言导出动态库需要在返回值和函数之间加上__declspec(dllexport) 2.C语言导出动态库需要在class和类名之间加上__declspec(dllexport) 3.C++由于支持函数重载,所以在编译时要给每个函数名重新改名字(加上参数信息),而C不支持,所以C语言无法使用C+
阅读全文
摘要:1、现象 调用自己编写的一个动态库里的函数,传递一个vector进去,方式为值传递。传进去之前vector的大小为1000,在动态库的函数内部大小变为了500,且内容都变了。 2、解决 改成引用传递 https://blog.csdn.net/qq_35097289/article/details/
阅读全文
摘要:1、方式1:使用全局路径 LIBS+= $$PWD/Boost/lib/libboost_thread-mgw8-mt-d-x32-1_78.a LIBS+= $$PWD/Boost/lib/libboost_thread-mgw8-mt-d-x32-1_78.lib 2、方式2:引入路径+使用静态
阅读全文
摘要:1、静态库和动态库 库有两种:静态库和动态库。所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤:链接: 把外部函数的代码(通常是后缀名为.lib和.a的文件),添加到可执行文件中。这就叫做连接(linking)。这种通过拷贝,将外部函数库添加到可执行文件的方式,叫做静态连接(sta
阅读全文
摘要:windows版本 一、生成dll 1、新建源文件 myfunction.h #ifndef MYFUNCTION_H #define MYFUNCTION_H #include <iostream> class Myfunction { public: Myfunction(); static v
阅读全文
摘要:前篇文章是调用非托管,比较复杂,这里是调用托管,很简单【所以在遇到非托管dll时可以通过二次封装成托管的方式,再通过这边文章来使用】 1、注意这是基于COM的ocx或者dll,所以用regsvr32先注册 2、新建C#winform工程 3、在解决方案中的引用中,右键添加引用 如果是注册了的,在CO
阅读全文
摘要:1、新建工程 注意选择显示时注册,免得后面又去手动注册 2、工程解释,一般ocx是看类视图而不是解决方案 ①、xxxApp:类似整个工程的入口,有xxxApp.h和xxxApp.cpp,工程的初始化,注册反注册,一般不用管 ②、xxxCtrl:核心代码处,属性、方法、函数的声明及实现 ③、xxxPr
阅读全文
摘要:以C#开发周立功CAN举例,在官网下载了周立功的demo 一、C++头文件样子 //接口卡类型定义#define VCI_PCI5121 1 //一些结构体定义 typedef struct tagRemoteClient{ int iIndex; DWORD port; HANDLE hClien
阅读全文
摘要:一、托管:如果一个动态库本身是基于.NET的,那么可以直接在工程引用里右键添加引用,如微软的COM技术【因为你依托的是微软的框架,所以需要regsvr32注册】 二、非托管:如果不是基于.NEt的,那么需要使用DllImport技术,或者通过MFC把这个dll封装成OCX转为COM【如C++写的DL
阅读全文
摘要:一、dll dll就是打包一些程序或者算法,根据我的理解分个类 1、算法的打包 比如打包C/C++的一些纯代码算法,计算平均值,极值,标准差....,只需要向外提供接口和入口参数,外部即可轻松调用 2、带依赖项的打包 这里的依赖项是带设备的dll,如一套采集视频的设备,配套的dll已经完成了摄像头的
阅读全文