2016-08-09 47 views
1

我使用BVLC Caffe on the Windows branch,目前不支持。Caffe for Windows的調試模式pycaffe中的Lnk2019錯誤

當我嘗試編譯在調試模式pycaffe上的Visual Studio 2013,我得到

_caffe.obj : error LNK2019: unresolved external symbol __imp__Py_NegativeRefcount referenced in function _import_array 
_caffe.obj : error LNK2019: unresolved external symbol __imp__Py_Dealloc referenced in function _import_array 
_caffe.obj : error LNK2001: unresolved external symbol __imp__Py_RefTotal 

然而,pycaffe在Release模式精細編譯錯誤。我正在使用Python 2.7.12 :: Anaconda 4.1.1(64位),並且已將一個python27_d.lib添加到libs目錄。

這不是一個問題重複,因爲:

+0

可能重複[什麼是未定義的引用/無法解析的外部符號錯誤,以及如何解決它?](http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved- external-symbol-error-and-how-do-i-fix) –

回答

2

將pyconfig.h從您的python目錄複製到pycaffe源代碼所在的位置。

找到以下行:

#ifdef _DEBUG 
# define Py_DEBUG 
#endif 

,並進行修改,使其看起來像這樣:

#ifdef _DEBUG 
//# define Py_DEBUG 
#endif 

基本上沒有定義Py_DEBUG。 或者,你可以直接修改pyconfig.h文件而不用先複製它。

問題出現是因爲python在調試模式下編譯的額外代碼在發行模式中找不到,因此如果編譯正確,libs和dll不應該是相同的。

+0

這對我有效!我討厭它涉及手動編輯一個配置文件,但是,嘿,你做什麼你必須做的。只要確保你爲需要維護代碼的下一個糟糕的吸盤保留良好的註釋。 –