Python调用C++DLL函数出错String类型问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python调用C++DLL函数出错String类型问题相关的知识,希望对你有一定的参考价值。

 

调用c++ 函数原型如下,一直失败,请个日志断点发现 参数未能正确解析。

int EXPORT  init_ner(string cfg_path);
typedef int (*Proc_init_ner)(string cfg_path);

int EXPORT  fini_ner();
typedef int (*Proc_fini_ner)();


string EXPORT process(string input_jsn_str);
typedef string (*Proc_process)(string input_jsn_str);

 改动C++ 代码如下:

int EXPORT  init_ner(const char* cfg_path);
typedef int (*Proc_init_ner)(const char* cfg_path);

int EXPORT  fini_ner();
typedef int (*Proc_fini_ner)();


string EXPORT process(const char* input_jsn_str);
typedef string (*Proc_process)(const char* input_jsn_str);

 python如下调用 就可以成功了。

dll = windll.LoadLibrary("NER.dll")

dll.init_ner("./engine_cfg/ner.cfg")

 

以上是关于Python调用C++DLL函数出错String类型问题的主要内容,如果未能解决你的问题,请参考以下文章

delphi调用VC写的Dll报错

python调用c的dll文件

如何在 C#/Python 中从 DLL 调用函数

C#调用C/C++的dll,一个库中包括多个函数,每调用一个函数都要用DllImport加载吗?求大神

使用 python 和调用函数自省 C++ dll

python使用ctypes调用C编译dll函数方法