C++编译为动态链接库并用python调用

将C++函数编译为动态链接库并用python调用

环境:win10 | vs2019 | python3 | ctype

① 创建 dll 项目C++编译为动态链接库并用python调用_第1张图片

② 创建自己的头文件和源文件,自动生成的不用管(这样后面会有一个报错,改下设置就 ok l)
C++编译为动态链接库并用python调用_第2张图片

③ 需要导出让 python 调用的函数加一些关键字声明,其余的函数不用管,加的原因网上很多,不多说
将C/C++编译为动态链接库并供python调用其函数_潇洒过路客的博客-CSDN博客_编译成动态链接库以便python环境下可以被调用
C++编译为动态链接库并用python调用_第3张图片

④ 运行后,会报错,这个报错正常,生成成功就ok了
这里会报错 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h“
属性-预编译头-不使用预编译头
使用vs2019用c++创建dll库_xujianjun229的博客-CSDN博客_vs2019创建c++dll
C++编译为动态链接库并用python调用_第4张图片

运行后的界面
C++编译为动态链接库并用python调用_第5张图片

⑤ 我用的release ,所以生成的 dll 在release 里面,调用的库不同这里的dll数量也不同
C++编译为动态链接库并用python调用_第6张图片

⑥ 把 Dll1.dll 以及 他依赖的其他 dll 一起放到 python 脚本的同级目录(可以把release文件夹所有dll复制过去),不然可能会报错 找不到某个 dll
C++编译为动态链接库并用python调用_第7张图片

⑦最好在 c++ 设置一下输出,看一下c++接到的 数据是否正确
我这里需要传几个路径,所有用了一个结构体。注意c++ 和 python 之间的数据转换问题
python 使用ctypes调用C/C++ dll - 我来乔23 - 博客园 (cnblogs.com)

地址不对会报错: OSError: [WinError -529697949] Windows Error 0xe06d7363

⑧整个过程各种踩坑
留个坑:我这里的函数没有返回值,当我试着返回一张图时,会报错:
OSError: exception: access violation reading 0xFFFFFFFFFFFFFFFF
有说是内存的问题,不知道怎么破???

你可能感兴趣的:(Python,c++,python)