Visual C++调试库命名约定



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

如果正在生成调试版本,VS是否在默认情况下添加_d。对于给定的引用库,有没有一种方法可以选择性地关闭它?顺便说一句,该应用程序的发布版本构建良好。

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

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

请参阅Python调试构建来自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……也许您可以尝试使用它(或浏览代码;)

相关内容

  • 没有找到相关文章

最新更新