C++调Python

  • 没有编译好的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对象,可以直接在局部函数里释放

你可能感兴趣的:(C++调Python)