【发布时间】:2011-07-31 14:53:04
【问题描述】:
我已经在 Windows 下使用 Visual C++ Express 2010 构建了 Python (3.2.1) 和 boost::python (1_47_0)。虽然 boost::filesystem 工作正常,但 boost::python 不能(这两个都需要链接到库以及标题)。我收到了错误:
2>LINK : fatal error LNK1104: cannot open file 'boost_python-vc100-mt-gd-1_47.lib'
这看起来很清楚,但是在 stage/lib 文件夹中,我可以看到“libboost_python_vc100-mt-gd-1_47.lib”——即正确的文件名,但以“lib”为前缀。不知何故,自动链接适用于文件系统的东西,但不适用于 Python。如果我复制 boost::python 库并删除“lib”前缀,则所有链接都很好。
这是一个已知的 Boost 问题,还是有其他问题?我可以重命名文件,但最好删除这一步。
【问题讨论】:
-
您的问题有误吗?你的文件是
libboost_python_vc100-mt-gd-1_47.lib还是libboost_python-vc100-mt-gd-1_47.lib? -
如果您将 boost 构建为动态库(标志
link=shared),您将获得不带“lib”前缀的 lib 文件。但是既然你想做静态链接,那么下面定义STATIC_LIB的答案会更合适。相关帖子:stackoverflow.com/a/3461840/2159806 -
@Hans 你在哪里定义 CMAKE 中的 STATIC_LIB?在.h?能给我举个例子吗。我在选择要重命名 boost_python 的输出文件时遇到问题。
标签: c++ python boost static-linking