2013-02-17 99 views
2

在Visual C++ 8中,我試圖構建最新的OpenCV版本。我正在使用BUILD_ALL目標,它試圖構建一切的調試和發佈版本。我在嘗試鏈接opencv_python應用程序時遇到鏈接錯誤。錯誤在於連接器找不到預期的Python27_d.lib庫,因爲我沒有該庫,只有發佈庫。我不明白的是它是在項目配置中需要的發佈庫(沒有_d),並且它是在生成的命令行上傳遞的內容。Visual C++調試庫命名約定

如果正在構建調試版本,VS是否默認添加了_d。有沒有辦法有選擇地關閉給定的引用庫?順便說一句,應用程序的發佈版本沒有問題。

+1

我相信你必須構建一個Python的調試版本,自己創建Python27_d.lib。它與VC++使用兩個不同的運行時庫有關,具體取決於代碼的編譯方式(Debug或Release)。 – martineau 2013-02-17 17:42:22

回答

3

這個問題實際上是在Python.h(尤其是pyconfig.h),說明實際的Python的lib名

[我相信]你不需要使用一個Python調試庫,升壓人已經處理了這個問題

看到Python debugging builds 從pyconfig.h:

升壓
/* For an MSVC DLL, we can nominate the .lib files used by extensions */ 
#ifdef MS_COREDLL 
# ifndef Py_BUILD_CORE /* not building the core - must be an ext */ 
#  if defined(_MSC_VER) 
      /* So MSVC users need not specify the .lib file in 
      their Makefile (other compilers are generally 
      taken care of by distutils.) */ 
#   ifdef _DEBUG 
#    pragma comment(lib,"python27_d.lib") 
#   else 
#    pragma comment(lib,"python27.lib") 
#   endif /* _DEBUG */ 
#  endif /* _MSC_VER */ 
# endif /* Py_BUILD_CORE */ 
#endif /* MS_COREDLL */ 

他們有Python.h包裝升壓/蟒蛇/細節/ wrap_python.hpp負責處理所有的Windows特定STU ff(尤其是允許你用發佈Python構建一個調試DLL ....也許你可以試着用它來代替(或者通過代碼;)