C++ / Boost 文件系统 - 检测到"_MSC_VER"不匹配:值'1700'与值"1600"不匹配
C++ / Boost Filesystem - mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600'
我是C++和Boost的新手。我正在做一个简单的小程序来学习Boost文件系统库。我已经按照指示构建了Boost库。现在,当我试图编译这个简单的代码时,我得到了其中的6个错误。
错误5错误LNK2038:检测到"_MSC_VER"不匹配:值"1700"与App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filsystem-vc110-mt-gd-1_51.lib(codecvt_Error_category.obj)ConsoleApp2中的值"1600"不匹配错误1错误LNK2038:检测到"_MSC_VER"不匹配:值"1700"与App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-gd-1_51.lib(operations.obj)ConsoleApp2中的值"1600"不匹配错误2错误LNK2038:检测到"_MSC_VER"不匹配:值"1700"与App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filsystem-vc110-mt-gd-1_51.lib(path.obj)ConsoleApp2中的值"1600"不匹配错误3错误LNK2038:检测到"_MSC_VER"不匹配:值"1700"与App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filsystem-vc110-mt-gd-1_51.lib(path_traits.obj)ConsoleApp2中的值"1600"不匹配错误4错误LNK2038:检测到"_MSC_VER"不匹配:值"1700"与App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filsystem-vc110-mt-gd-1_51.lib(windows_file_decvt.obj)ConsoleApp2中的值"1600"不匹配错误6错误LNK1104:无法打开文件"libboost_filesystem-vc100-mt-gd-1_51.lib"C:\SOURCE\ConsoleApp2\ConsoleApp2\LINK ConsoleApp2
我的ConsoleApp2项目中App.cpp
中的代码
#include <iostream>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::filesystem;
int main(void)
{
path p = "C:\TestFiles";
cout << is_directory(p);
return 0;
}
我正在尝试使用Visual Studio 2010编译该应用程序。我在网上找到的一些信息与VS 2012有关。我认为这不适用于我。我想尝试解决5个不匹配错误和最后的链接错误。我希望最后一个错误与之前的5有关。
libboost_filesystem-vc110-mt-gd-1_51.lib
是使用VS 2012(也称为VC 11.0)构建的库,如命名约定中的vc110
所示。此库将无法与使用VS2010(也称为VC10.0)构建的对象正确链接
如果你想用VS2010构建你的程序,你需要获得或构建VS2010的boost库。
使用文本编辑器打开*.vcxproj
文件。
查找并删除<_ProjectFileVersion>
元素,然后保存文件。
示例,
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>11.0.30319.1</_ProjectFileVersion> <--- Delete this element
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
并重新构建解决方案。您将看到项目编译成功。
我试图编译Teamcenter ITK C++代码,但得到了相同的错误消息:
错误LNK2038:检测到"_MSC_VER"不匹配:值"1700"不匹配匹配itk_main.obj 中的值"1600"
我所做的变通方法是搜索位于c中某个位置的msvcprt.lib:(使用everything.exe进行搜索,可以在voidtools.com上找到)
在NP++或文本编辑器中打开该文件,搜索关键字_MSC_VER,并将值/FAILIFMISOMATCH:"_MSC_VER=1700"更改为/FAILIfmISOMATCH:"_MSC_VER=1600"
是的,我能够编译。
解决方案对我有效。
但不完全是msvcprt.lib
在错误消息中查找.lib文件。
在我的情况下,有一些file.lib,我在文件资源管理器中搜索,它在文件夹中提供了两个类似的文件
1) Release2) 调试
已在调试文件夹中打开somefile.lib,在NP++中打开,已找到并替换例如:在我的情况下,1700与1900(VS 2015)
重新编译后,viola错误消失了。
为了简单解释为什么,其他用户给出了几个技术原因。
PS:i在VS2015中编译VS 2012中构建的代码,1700是VS 2012的编译器版本,1900是VS 2015 的编译器版本
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 为什么我的数组值与此处的全局变量不匹配?
- 比较 C++ 中的两个数组,并根据元素的匹配或不匹配返回值
- 检测到"运行时库"的不匹配LNK2038:值"MT_StaticRelease"与 xxx.obj 中的值"MTd_StaticDebug"不匹配
- C++公式与指定值不匹配的结果
- C++ / Boost 文件系统 - 检测到"_MSC_VER"不匹配:值'1700'与值"1600"不匹配
- 返回指向常量getter的指针时,返回值类型与函数类型不匹配
- 返回值类型与函数类型CONST不匹配
- 动态数组的大小与提交的值不匹配
- LNK2038:检测到"boost_log_abi"不匹配:值'v2s_mt_nt5'与值"v2s_mt_nt6"不匹配
- C++ 返回值类型与函数类型不匹配
- 错误 LNK2038:检测到"_MSC_VER"不匹配:值 '1600' 与 CppFile1.obj 中的值"1700"不匹配
- 参数处的类型/值与Template不匹配
- 为什么我的静态方法的返回值与定义的构造函数(在 c++ 中)之间存在类型不匹配?
- 如何在C++中比较两个数组并返回不匹配的值
- c_str()返回值与const char*不匹配
- 类型值与向量不匹配错误
- 重载new返回的值与this不匹配
- 用户输入值,但打印到屏幕的任意值。打印值与输入的值不匹配
- nullptr类型的宏返回值与函数类型不匹配