web-dev-qa-db-ja.com

C ++ / Boostファイルシステム-「_ MSC_VER」で不一致が検出されました:値「1700」が値「1600」と一致しません

私はC++とBoostを初めて使用します。 BoostFilesystemライブラリを学習するための小さな簡単なプログラムを実行しています。私はBoostライブラリを構築するための指示に従いました。そして今、この単純なコードをコンパイルしようとすると、これらのエラーのうち6つが発生します。

エラー5エラーLNK2038:「_ MSC_VER」で不一致が検出されました:値「1700」がApp.objの値「1600」と一致しませんC:\ SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd- 1_51.lib(codecvt_error_category.obj)ConsoleApp2 
エラー1エラーLNK2038:「_ MSC_VER」の不一致が検出されました:値「1700」がApp.obj C:\ SOURCE\ConsoleApp2\ConsoleApp2の値「1600」と一致しません\ libboost_filesystem-vc110-mt-Gd-1_51.lib(operations.obj)ConsoleApp2 
エラー2エラーLNK2038:「_ MSC_VER」の不一致が検出されました:値「1700」がアプリの値「1600」と一致しません。 obj C:\ SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd-1_51.lib(path.obj)ConsoleApp2 
エラー3エラーLNK2038:「_ MSC_VER」の不一致が検出されました:値「1700」はありませんt App.obj C:\ SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd-1_51.lib(path_traits.obj)ConsoleApp2 
エラー4エラーLNK2038の値「1600」に一致:「の不一致が検出されました」 _MSC_VER ':値' 1700 'はmaではありませんApp.objのtch値「1600」C:\ SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd-1_51.lib(windows_file_codecvt.obj)ConsoleApp2 
エラー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でアプリをコンパイルしようとしています。オンラインで見つけた情報の一部は、VS2012に関連していました。これは私には当てはまらないと思います。 5つのミスマッチエラーと最後のリンクエラーを解決してみたいと思います。最後のエラーがその前の5に関連していることを願っています。

9
BuddyJoe

libboost_filesystem-vc110-mt-Gd-1_51.libは、命名規則のvc110で示されているように、VS 2012(VC 11.0)とも呼ばれます)で構築されたライブラリです。このライブラリは、 VS 2010で構築されたオブジェクト(VC 10.0)とも呼ばれます)と適切にリンクします。

VS 2010を使用してプログラムをビルドする場合は、VS2010用のブーストライブラリを取得またはビルドする必要があります。

14
Michael Burr

*.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'">

そして、ソリューションを再構築します。プロジェクトが正常にコンパイルされていることがわかります。

4

Teamcenter ITK C++コードをコンパイルしようとしましたが、同じエラーメッセージが表示されました。

エラーLNK2038:「_ MSC_VER」で不一致が検出されました:値「1700」がitk_main.objの値「1600」と一致しません

私が行った回避策は、cのどこかにあるmsvcprt.libを検索することでした:(voidtools.comにあるeverything.exeを使用して検索しました)

そのファイルをNP ++またはテキストエディタで開き、キーワード_MSC_VERを検索して、値/ FAILIFMISMATCH: "_ MSC_VER = 1700"を/ FAILIFMISMATCH: "_ MSC_VER = 1600"に変更しました。

そして、はい、私はコンパイルすることができました。

0
vignesh naidu