2

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

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

4

1 回答 1

4

问题实际上出在 Python.h(尤其是 pyconfig.h)中,它指定了实际的 Python 库名称

[我相信]你不需要使用Python调试库,boost人已经处理过这个问题

请参阅 pyconfig.h 中的Python 调试构建:

/* 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 ......也许你可以尝试使用而是(或通过代码;)

于 2013-06-13T11:57:36.107 回答