3.2 动态链接库--c++生成dll,c++调用dll,python调用dll

摘要:独立于.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++模式下相同

来源:琦琦潮科技

相关推荐