摘要:独立于.exe可执行文件的代码,可以被复用,减少存储体积,使用时加载。
独立于.exe可执行文件的代码,可以被复用,减少存储体积,使用时加载。
qt creator生成dll为例
2.1 .pro文件配置
基础设置,与正常的生成.exe的设置相同
第三方库库配置,这部分也相同,按需配置
dll和lib文件配置,以及dll的头文件包含(如果头文件使用了绝对路径可以省略)
2.2 .h.cpp.ui文件添加
将需要生成dll的文件,加到项目中
2.3 .h文件修改
在最底层的一个.h文件中添加接口导出宏,根据.pro中设置的DEFINES信息进行设置
修改类和函数,将宏添加到关键字和类名或函数名之间即可
2.4 c接口.h文件编写
python调用的接口函数需要c模式下,声明如下,实现和c++相同
3.c++调用dll
3.1 .pro文件配置
除了基础设置和调用第三方库
将生成的dll信息加入,用法和使用第三方库相同,注意将依赖的第三方库的信息加入
3.2 .h文件使用
使用方法同第三方库的调用方法,添加头文件,调用接口
注意:只有在2.3中,接口导出宏修饰的函数或类才能够被调用
运行结果如下图,与exe相同
4.python调用dll
4.1 加载dll
4.2 检查dll的依赖dll
如果报以上错误,表示路径错误,找不到dll,使用绝对路径进行测试
如果使用绝对路径仍然报错,那么就是依赖的dll找不到或不能加载
命令行使用下面名,或者换dll的绝对路径,查看dll的依赖dll
dumpbin为vs中的一个工具,如果是其他环境,可以使用对应的二进制文件分析工具.
结果如图
依次测试这些dll,将不能使用相对路径的dll,使用绝对路径加载
4.3 调用c接口中的函数
成功加载后,即可调用c模式下写的接口函数
dll中的test实现
运行结果如下图,与c++模式下相同
来源:琦琦潮科技