C++调Python
2019-08-26 本文已影响0人
你猜_19ca
- 没有编译好的python36_d.lib库情况下,debug编译遇到如下问题:
error LNK2019: 无法解析的外部符号 __imp__Py_NegativeRefcount
error LNK2019: 无法解析的外部符号 __imp___Py_RefTotal
解决办法:
修改两个头文件
1 注释掉object.h第56行
//#define Py_TRACE_REFS
2 pyconfig.h 375行
//# define Py_DEBUG
以上两个宏定义注释掉以后重新编译 问题解决
-
QT的slots关键字和python中object.h中的slots关键字冲突
解决办法
修改python的object.h中slots, 换个别名即可. -
C++调python接口的时候报0xFFFFFFFF
原因是: 在C++的函数里调用了Py_DECREF释放了内存,导致python再次调用的时候内存地址不变,但是内容为空了,野指针问题
解决办法: 不在C++局部函数里释放内存,而在销毁C++调用对象时(不再需要调python)再释放掉内存,即在析构函数里调用Py_DECREF
如果只是python的返回结果PyObject对象,可以直接在局部函数里释放