我有一个C ++控制台应用程序,我使用Microsoft SDK编译器成功编译了windows x86平台。现在,我想为x64系统编译相同的源代码。我正在使用boost库(文件系统,程序选项和其他一些方法)。我已经为x64系统重新编译了boost库(使用“bjam --toolset = msvc-9.0 address-model = 64 --build-type = complete stage”)。现在,当我尝试编译源文件时,它会抱怨boost库。
之前我包含“libboost_filesystem-vc120-mt-1_55.lib”并成功编译。现在我包括“boost_filesystem-vc90-mt-1_55.lib”,但链接器抱怨:
LINK:致命错误LNK1104:无法打开文件 'libboost_filesystem-VC120-MT-1_55.lib'
我不知道为什么还要求“libboost_filesystem-vc120-mt-1_55.lib”库。
提前致谢,
塞尔哈特
答案 0 :(得分:3)
出于二进制兼容性原因,您无法将使用不同编译器编译的boost链接到您正在使用的编译器。在这种情况下,您使用vc120作为主编译器,但正在使用vc90编译boost。这两个工具集不会(故意)产生二进制兼容结果。
在这种情况下,您需要在IDE附带的vs2012 x64本机命令提示符中编译boost。这将生成您需要的库。