Boost静态/MT释放

Boost Statically /MT Release?

本文关键字:释放 MT 静态 Boost      更新时间:2023-10-16

我用以下命令编译并运行了bjam甚至b2.exe:

bjam——与系统与线程等. .

我得到了我的库文件:

libboostrongystem-vc110-mt-1_53.lib
libboostrongystem-vc110-mt-gd-1_53.lib

问题是,一旦我声明了目录并将它们链接到我的项目中,它就会一直说版本不匹配:found/mrelease in project/mrelease .

是的,我的项目是静态链接的/MT发布,这就是我需要的,但boost给我带来了麻烦。什么好主意吗?谢谢你。

这听起来像是版本问题。您得到的错误表明一些组件是用一组库构建的,而其他组件是用另一组库构建的。

如果您正在构建使用不同类型库的此代码的其他组件,例如MT(多线程-不调试)或MDd (dll的多线程调试),那么您可能会得到此错误。如果您为Boost链接了错误的库集,也可能会出现此错误。您需要使用您在自己的代码中使用的相同类型的库进行构建。如果您正在使用MTD,那么也可以使用MTD版本的Boost库进行构建。

要查看您的项目正在使用哪些库,请在解决方案资源管理器窗口中右键单击项目并选择属性。也可以从项目菜单中选择属性,但在执行此操作之前,请确保该项目中有一个文件作为编辑窗口中打开的当前文件。在Runtime Library下,您将看到正在使用的库的类型。如果项目类型是dll,那么该值实际上应该设置为MDd。要查看它是什么类型的项目,请单击属性下的链接器(或图书管理员)选项,如果输出文件是dll,则项目类型是dll。如果它说库或exe,那么项目分别是库或exe。给定类型的所有项目都应该以相同的方式构建。例如,您不应该尝试混合使用发布版本和调试版本。如果您正在构建一个exe,那么请使用用于构建库类型项目的任何库。要设置库,请在属性下选择Configuration properties/C/c++/Code Generation/Runtime library,并从下拉框中选择类型。

如果所有项目的配置看起来都是正确的,那么尝试从头开始重新构建。这可以通过右键单击项目并选择clean,然后选择rebuild来完成。

当运行b2.exe构建库时,如果遇到错误,我总是使用-q选项使其停止。如果构建中有错误,有时很难看到,因为b2有相当多的输出。有关与b2相关的选项列表,请参见此链接。

还请注意,libboostrongystem-vc110-mt-1_53。lib只能用于VS 2012项目。如果你没有使用VS 2012,那么你需要做两件事。首先,您可能无法在2012年之前的任何版本的Visual Studio中使用boost 1.53或更高版本,因为2012年是第一个最好地支持最新版本的c++标准的版本。因此,您可能不得不使用1.52。你要做的第二件事是在b2中指定你正在使用的工具集选项的Visual Studio版本(例如-——toolset=msvc-10.0 -如果使用VS 2010),这样它就会为你构建正确的库。

您需要构建静态库。

bjam——buildtype =complete