首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >促进静态/MT发布?

促进静态/MT发布?
EN

Stack Overflow用户
提问于 2013-04-01 13:39:50
回答 2查看 914关注 0票数 0

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

bjam -带线程 ..etc

我的图书馆档案是:

libboost_system-vc110-mt-1_53.lib

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

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

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

EN

回答 2

Stack Overflow用户

发布于 2013-04-01 16:39:24

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

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

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

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

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

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

票数 1
EN

Stack Overflow用户

发布于 2013-04-01 14:17:55

你需要构建静态库。这将起到以下作用:

bjam --构建类型=完成

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15744585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档