在Visual Studio中将调试与C .lib的发行版相结合
Combine Debug with Release for C++ .lib in Visual Studio
我正在尝试将我的c 变成一个.lib文件以与我的项目一起使用。
我有文件Log.h
和Log.cpp
。
我进入了Visual Studio中的项目属性,并将配置类型从.exe
更改为.lib
。我将构建模式设置为Release
,并将我的类构建到一个名为Log.lib
的文件中。
在一个新的C 项目中,我正在尝试将我与Log.h
文件一起制作的.lib
文件。一切都成功了,它识别了我的功能,但是当我尝试使用包含的Log.h
运行我的EXE程序时,我会得到以下错误:
mismatch detected for '_ITERATOR_DEBUG_LEVEL':
value '2' doesn't match value '0' in main.obj
通过引用此stackoverflow帖子,我发现以Release
模式(与.lib
模式相同)构建和运行我的新项目可以删除错误,我可以成功地运行程序并使用Log.h
。
如何编译我的 Log.h
lib与Debug
和Release
兼容?
您在项目要链接到的C运行时库的版本中有不匹配。其中一个项目是链接到CRT的调试版本,而另一个项目则链接到CRT的发行版。不支持混合配置,这导致了错误消息。标准库模板类在调试和发布构建中实际上是不同的。
您需要检查所有项目的设置(生成EXE或LIB文件作为输出的所有内容),并确保它们都使用相同版本的CRT。这是传递给编译器的/MT
或/MD
开关。
不可能构建您的lib以与调试和发布C运行时库(CRT)兼容。另请参阅此处。
但是可以更改EXE项目中的CRT版本:如果调试和发布配置都使用相同版本的CRT(例如Multi-threaded DLL (/MD)
),则可以在发行配置中构建LIB,并在Release中使用它以及您的EXE程序的调试配置(这将导致调试支持较差)。
要更改Visual Studio中的运行时库,打开项目属性,然后转到" C/C " - "代码生成" - " Runtime库"(这取决于您使用的Visual Studio版本,但至少应对VS2010-2015有效)。
- C++ 将函数指针与最佳性能相结合
- 将2个欧拉角与GLM相结合的问题
- 抽象和派生与std::list相结合
- 想要将 CGAL 与四元数相结合是否合乎逻辑
- 可变参数模板与默认模板参数相结合
- 是否可以将C++与任何语言相结合?
- 如何将Back_inserter与转换组合C 相结合
- C 操纵器,可以将SetPrecision Manip与SetFill Manip相结合
- 如何将Boost.Spirit自定义点与Nabialek相结合?
- 将可选与reference_wrapper相结合是否有意义?
- 好的设计?用于分配的智能指针与用于访问的原始指针相结合
- 用户定义的文字与UINT64_T参数相结合
- 前向迭代器与多个绑定相结合的迭代速度太快
- 有问题使循环工作与功能相结合
- 如何在C++中将惰性计算与自动计算相结合
- 在Visual Studio中将调试与C .lib的发行版相结合
- 将声明和初始化与超载`=`相结合
- Mac OS X上的MetaTrader 4与C++或R相结合
- CUDA与OpenMP相结合
- 是否可以将Windows 8(Metro)C++/DDirectX游戏与(Metro)C#/XAML启动器相结合