缺少Python27_d.lib的解決方法


缺少Python27_d.lib的解決方法

http://blog.csdn.net/junparadox/article/details/52704287

http://lib.csdn.net/base/python  

簡介

最近在調用caffe的Python接口訓練網絡,需要進到caffe代碼中調試,編譯時需要用Python27_d.lib、Python27_d.dll。但是一般我們下載的都是release版的。怎么辦?自己編譯一個debug版本當然可以,但是很麻煩啊。很多網友解決方法是把Python27.lib、Python27.dll拷貝為Python27_d.lib、Python27_d.dll。 
  不過拷貝后可能出現一些錯誤。這里說一下我的解決方法。

在vs下引用偽造的”debug版本“可能出現鏈接問題

  引用自己偽造的debug版Python27_d.lib、Python27_d.dll可能出現的問題:

  1. extmodule.obj : error LNK2019: unresolved external symbol __imp___Py_Dealloc referenced in function _PySwigObject_format
  2. extmodule.obj : error LNK2019: unresolved external symbol __imp___Py_NegativeRefcount referenced in function _PySwigObject_format
  3. extmodule.obj : error LNK2001: unresolved external symbol __imp___Py_RefTotal
  4. extmodule.obj : error LNK2019: unresolved external symbol __imp___PyObject_DebugFree referenced in function _PySwigObject_dealloc
  5. extmodule.obj : error LNK2019: unresolved external symbol __imp___PyObject_DebugMalloc referenced in function _PySwigObject_New
  6. extmodule.obj : error LNK2019: unresolved external symbol __imp__Py_InitModule4TraceRefs referenced in function _init_extmodule

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

解決方法

  • 修改 pyconfig.h

#ifdef _DEBUG
# define Py_DEBUG
#endif

#ifdef _DEBUG
//# define Py_DEBUG
#endif

修改

# ifdef _DEBUG
# pragma comment(lib,"python27_d.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */

# ifdef _DEBUG
# pragma comment(lib,"python27.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */

修改object.h

#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
#define Py_TRACE_REFS
#endif

為:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM