当使用c++生成的dll给python使用,python使用ctypes调用dll时出现不是有效的win32应用程序
原因:python的编译环境有32位和64位,而c++编译的dll动态链接库也是有32位和64位平台之分
解决方法:如果dll链接库是别人提供的,那么只能创建新的虚拟环境,安装python解析器与dll支持的平台环境一致(此方法此处不解释),如果dll是自己编译的,那么只需要更改编译生成的支持平台即可(使用vs2012编译)
二、使用vs2012生成dll此处引用:https://blog.csdn.net/kylett/article/details/84290853的博客
1.源文件中创建cpp文件
2.编译生成dll文件
编译前需要配置新的管理器(默认是win32平台)->选择配置管理器
点击新建:
选择x64->确定后编译当前的代码即可:
1.如果使用的是win32编译成的dll文件,在使用python(63位)调用时,将出现以下报错信息:
2.如何确定python支持的平台:
3.代码如下:
确定没有问题后,开始调用dll文件进行测试:
from ctypes import *dll = CDLL('Dll_To_Python.dll')dll.sum.argtypes = [c_wchar_p,c_int,c_float]dll.sum.restype = c_wchar_pstr = "come in";pchar = dll.sum(str,2,3.215)print(pchar)此处依旧引用:https://blog.csdn.net/kylett/article/details/84290853的博客
四、总结1.知道dll支持的平台
2.知道python解析器支持的平台
3.编写dll文件
4.引用dll文件
如何将OpenCV的功能和自己写的算法使用c++封装好成dll动态链接库文件给python使用?