Boost静态/MT释放
Boost Statically /MT Release?
我用以下命令编译并运行了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
- 释放错误后堆使用
- G锁定铸造到基础上会释放模拟行为
- 在将变量声明为引用时,堆在释放后使用
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 正在理解智能指针,但出现错误:未分配正在释放的指针
- C++双重释放或损坏(out)
- 如何在c++中释放内存
- 使用全局声明的向量时,C++双重释放错误/损坏
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- 为什么瓦尔格林德在不释放恶意内存后没有报告任何问题?
- 调用析构函数以释放动态分配的内存
- 在函数范围内在堆栈上分配的数组在离开函数时是否总是被释放?
- COM :是否可以查看是否存在对我的某个 COM 对象的进程外引用?我可以释放它吗?
- 如何在向量中释放指针?
- std::unordered_map析构函数不释放内存?
- 在C++中释放内存期间,迭代器与指针有何不同
- 包含矢量指针的结构的内存释放问题
- C++:在被本地字符串捕获后释放或销毁 malloc'd char *?
- Boost静态/MT释放
- MT 或 MD 用于静态释放