您的位置:首页 > 编程语言 > Python开发

缺少Python27_d.lib的解决方法

2017-01-26 20:47 309 查看


在c++中调python函数时,出现了这个问题,python每个版本额解决方法类似。


在vs下引用伪造的”debug版本“可能出现链接问题

  引用自己伪造的debug版Python27_d.lib、Python27_d.dll可能出现的问题:
extmodule.obj : error LNK2019: unresolved external symbol __imp___Py_Dealloc referenced in function _PySwigObject_format
extmodule.obj : error LNK2019: unresolved external symbol __imp___Py_NegativeRefcount referenced in function _PySwigObject_format
extmodule.obj : error LNK2001: unresolved external symbol __imp___Py_RefTotal
extmodule.obj : error LNK2019: unresolved external symbol __imp___PyObject_DebugFree referenced in function _PySwigObject_dealloc
extmodule.obj : error LNK2019: unresolved external symbol __imp___PyObject_DebugMalloc referenced in function _PySwigObject_New
extmodule.obj : error LNK2019: unresolved external symbol __imp__Py_InitModule4TraceRefs referenced in function _init_extmodule
1
2
3
4
5
6
1
2
3
4
5
6

主要是因为 Py_DEBUG/Py_TRACE_REFS 引起, 修改 Python\include 下的 pyconfig.h, object.h

解决方法

修改 pyconfig.h

修改
#ifdef _DEBUG
# define Py_DEBUG
#endif
1
2
3
1
2
3


#ifdef _DEBUG
//# define Py_DEBUG
#endif
1
2
3
1
2
3

修改
# ifdef _DEBUG
# pragma comment(lib,"python27_d.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */
1
2
3
4
5
1
2
3
4
5


# ifdef _DEBUG
# pragma comment(lib,"python27.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */
1
2
3
4
5
1
2
3
4
5
修改object.h 

修改
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
#define Py_TRACE_REFS
#endif
1
2
3
1
2
3


#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
// #define Py_TRACE_REFS
#endif
1
2
3


1
2
3

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: