C++ 静态增压/MT释放?

C++ 静态增压/MT释放?,c++,boost,static-libraries,boost-asio,mt,C++,Boost,Static Libraries,Boost Asio,Mt,我使用以下命令编译并运行了bjam甚至b2.exe: bjam——带系统——带线程等 我的库文件是: libboost\u系统-vc110-mt-1\u 53.lib libboost_system-vc110-mt-gd-1_53.lib 问题是,一旦我在我的项目中声明了目录并链接了它们,它就会一直说版本不匹配:在project/MTRelease中找到了/MDRelease。 是的,我的项目是静态链接的/MT版本,这就是我需要的,但是boost给我带来了麻烦。 有什么想法吗?谢谢。您需要构建

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

bjam——带系统——带线程等

我的库文件是:

libboost\u系统-vc110-mt-1\u 53.lib
libboost_system-vc110-mt-gd-1_53.lib

问题是,一旦我在我的项目中声明了目录并链接了它们,它就会一直说版本不匹配:在project/MTRelease中找到了/MDRelease。

是的,我的项目是静态链接的/MT版本,这就是我需要的,但是boost给我带来了麻烦。
有什么想法吗?谢谢。

您需要构建静态库。这将实现以下目的:


bjam--build type=complete

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

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

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

如果所有项目的配置都正确,请尝试从头开始重建。这可以通过在项目上单击鼠标右键并选择“清理”,然后选择“重建”来完成

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

还请注意,文件libboost_system-vc110-mt-1_53.lib只能用于VS 2012项目。如果您没有使用VS 2012,那么您需要做两件事。首先,在2012之前,您可能无法使用任何版本的VisualStudio使用Boost版本1.53或更高版本,因为2012是最支持C++标准的最新版本的第一个版本。因此,您可能必须使用1.52。您必须做的第二件事是在b2中指定您使用工具集选项的Visual Studio版本(例如---toolset=msvc-10.0-如果使用VS 2010),以便它为您构建正确的库