在 C++ Win x64 应用程序中包含 boost 库
Including boost libraries in C++ Win x64 application
我有一个 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 : fatal error LNK1104: cannot open file
'libboost_filesystem-vc120-mt-1_55.lib'
我不知道为什么它仍然要求 "libboost_filesystem-vc120-mt-1_55.lib" 库。
提前致谢,
塞尔哈特
出于二进制兼容性原因,您不能 link 使用与您正在使用的编译器不同的编译器编译 boost。在这种情况下,您将 vc120 用于主编译器,但使用 vc90 编译 boost。这两个工具集不会(故意)产生二进制兼容的结果。
在这种情况下,您需要在 IDE 附带的 vs2012 x64 本机命令提示符中编译 boost。这将生成您需要的库。
我有一个 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 : fatal error LNK1104: cannot open file 'libboost_filesystem-vc120-mt-1_55.lib'
我不知道为什么它仍然要求 "libboost_filesystem-vc120-mt-1_55.lib" 库。
提前致谢,
塞尔哈特
出于二进制兼容性原因,您不能 link 使用与您正在使用的编译器不同的编译器编译 boost。在这种情况下,您将 vc120 用于主编译器,但使用 vc90 编译 boost。这两个工具集不会(故意)产生二进制兼容的结果。
在这种情况下,您需要在 IDE 附带的 vs2012 x64 本机命令提示符中编译 boost。这将生成您需要的库。