0

这个环境是win7,codeblocks,vs9,boost1.52,

我已经安装了带有python库的boost库。它会生成一些库文件。例如“libboost_python-vc90-mt-gd-1_52.lib”。

然后我写了一个测试代码进行编译和链接。但是出现错误:无法打开文件“boost_python-vc90-mt-gd-1_52.lib”。

VS 编译器无法识别带有“lib”头的库文件名?如何做得更好。

4

2 回答 2

2

lib在名称的开头添加前缀是 Linux 的事情。在 Windows.lib上,末尾有 a 。

如果库被命名为“libboost_python-vc90-mt-gd-1_52”,您必须将该名称准确地提供给链接器。

于 2012-12-27T10:29:06.447 回答
1

首先,Boost 在 Windows 下使用自动链接。因此,您只需要提供 boost 库的位置,而不是名称本身。

其次,Boost 对静态和动态链接库使用不同的文件名。带lib前缀的用于静态链接,不带前缀的用于动态链接。

默认情况下,Boost 在 Windows 上使用静态链接。定义BOOST_ALL_DYN_LINK(如果您只想动态链接某些库,也有特定于库的宏)将启用动态链接。

从您的错误消息来看,您的项目似乎已BOOST_ALL_DYN_LINK启用(在项目设置中,作为 a#define或 in <boost/config/user.hpp>。如果您更喜欢静态链接,请确保更改/删除此设置。

无论哪种方式,请确保相应的二进制文件可用并且链接器知道它们的位置(只是目录)。

于 2012-12-28T09:44:08.870 回答