gpt4 book ai didi

python - Visual C++ 调试库命名约定

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:43 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

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

关于python - Visual C++ 调试库命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14923953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com