我正在尝试编译一个使用静态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
我好像在调用编译器标志错了?但我看不到在哪里/如何。
有一个类似的问题here,但解决方案涉及如何设置visual studio /项目文件的问题。由于我没有项目文件,是否有一个我无法看到的上述简单解决方案,或者我是否需要设置项目?
提前感谢您的帮助!
答案 0 :(得分: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 \阶段\ lib中\“