在Visual C ++ 8中,我正在尝试构建最新的OpenCV版本。我正在使用BUILD_ALL目标,它试图构建所有内容的调试版本和发布版本。我在尝试链接opencv_python应用程序时遇到链接错误。错误是链接器找不到预期的Python27_d.lib库,因为我没有该库,只有发布库。我不明白的是,它是项目配置中所需的发布库(没有_d),它是在结果命令行上传递的内容。
如果正在构建调试版本,VS是否默认添加_d。有没有办法有选择地为给定的引用库关闭它?顺便说一句,该应用程序的发布版本构建良好。
答案 0 :(得分:4)
问题实际上在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 */
在boost中,他们为Python.h提供了一个包装器boost / python / detail / wrap_python.hpp,它处理所有特定于Windows的东西(特别是允许你用发布Python构建一个调试dll ......也许你可以只是尝试使用它(或通过代码;)