2013-02-17 45 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 ....也许你可以试着用它来代替(或者通过代码;)