Visual C ++调试库命名约定

时间:2013-02-17 17:37:11

标签: python visual-c++ opencv

在Visual C ++ 8中,我正在尝试构建最新的OpenCV版本。我正在使用BUILD_ALL目标,它试图构建所有内容的调试版本和发布版本。我在尝试链接opencv_python应用程序时遇到链接错误。错误是链接器找不到预期的Python27_d.lib库,因为我没有该库,只有发布库。我不明白的是,它是项目配置中所需的发布库(没有_d),它是在结果命令行上传递的内容。

如果正在构建调试版本,VS是否默认添加_d。有没有办法有选择地为给定的引用库关闭它?顺便说一句,该应用程序的发布版本构建良好。

1 个答案:

答案 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 ......也许你可以只是尝试使用它(或通过代码;)