私は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に関連していることを願っています。
libboost_filesystem-vc110-mt-Gd-1_51.lib
は、命名規則のvc110
で示されているように、VS 2012(VC 11.0)とも呼ばれます)で構築されたライブラリです。このライブラリは、 VS 2010で構築されたオブジェクト(VC 10.0)とも呼ばれます)と適切にリンクします。
VS 2010を使用してプログラムをビルドする場合は、VS2010用のブーストライブラリを取得またはビルドする必要があります。
*.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を検索することでした:(voidtools.comにあるeverything.exeを使用して検索しました)
そのファイルをNP ++またはテキストエディタで開き、キーワード_MSC_VERを検索して、値/ FAILIFMISMATCH: "_ MSC_VER = 1700"を/ FAILIFMISMATCH: "_ MSC_VER = 1600"に変更しました。
そして、はい、私はコンパイルすることができました。