0

我正在尝试编译一个使用静态 boost 库的 cpp 文件。我正在使用 Visual Studio 2008 命令提示符,因为我还没有设置 VS 项目文件。

我正在使用的命令是(从包含我的源代码的文件夹中运行):

cl /EHsc /I "C:\Program Files\boost\boost_1_53_0" Client.cpp

错误是:

LINK: fatal error LNK1104: cannot open file 'libboost_system-vc90-mt-s-1_53.lib'

但是,文件'libboost_system-vc90-mt-s-1_53.lib'可以在“C:\Program Files\boost\boost_1_53_0\stage\lib”中找到,所以我的理解是我已经正确安装了boost并且我'我只是没有链接到它?

我试过直接使用

cl /EHsc /I"C:\Program Files\boost\boost_1_53_0" /I "C:\Program Files\boost\boost_1_53_0\stage\lib\" Client.cpp 这给出了同样的错误。

我还尝试使用 /link 直接链接到它,如下所示: cl /EHsc /I"C:\Program Files\boost\boost_1_53_0" /link "C:\Program Files\boost\boost_1_53_0\stage\lib\libboost_system-vc90-mt-s-1_53.lib" Client.cpp

它返回一个不同的错误: cl : Command line error D8003 : missing source filename

我似乎在调用编译器标志错误?但我看不到在哪里/如何。

这里有一个类似的问题,但解决方案涉及如何设置 Visual Studio/项目文件的问题。由于我没有项目文件,对于上述问题是否有一个我看不到的简单解决方案,或者我需要建立一个项目?

提前感谢您的帮助!

4

1 回答 1

1

需要告知链接器库文件的位置。您与最后一个命令行非常接近,但文件名需要在/link选项之前。这应该有效:

cl /EHsc /I"C:\Program Files\boost\boost_1_53_0" Client.cpp /link "C:\Program Files\boost\boost_1_53_0\stage\lib\libboost_system-vc90-mt-s-1_53.lib"

此外,当链接到同一目录中的多个库时,使用该LIBPATH选项告诉链接器在哪里查找.lib文件会更简洁。

cl /EHsc /I"C:\Program Files\boost\boost_1_53_0" Client.cpp /link "libboost_system-vc90-mt-s-1_53.lib" /LIBPATH:"C:\Program Files\boost\boost_1_53_0\stage\库\"

于 2013-06-10T05:12:29.877 回答