Python调用动态链接库
DLL生成
- 选择win32控制台项目
- 选择dll项目
- 除了空项目外,导出符号,预编译头文件,安全周期检查都要选择。
- 如果预编译头文件出问题,在属性-c++-预编译头选型里不使用预编译头文件
按照以上步骤走就可以生成成功了,vs也会生成模板,可以按照提示做
调用DLL
首先抛出今天遇到的问题
-
AttributeError: function 'recog_color' not found
-
ctypes.ArgumentError: argument 7: <class 'TypeError'>: Don't know how to convert parameter 7
第一个问题是建立的c++工程,在导出头文件前面加上
#ifdef COLOR_RECOG_DLL_EXPORTS
#define COLOR_RECOG_DLL_API extern "C" __declspec(dllexport)
#else
#define COLOR_RECOG_DLL_API extern "C" __declspec(dllimport)
#endif
这一段除了extern "C"是系统自己生成的,在前面加上extern "c"就行
第二个问题是参数问题
- 第一个出问题是因为参数不匹配,传入的参数是float型,实际参数是int型
- Mat类型不可以直接传,需要变化一下,具体代码在github里面