作業中のプロジェクトで、新しいリンカーエラーが発生しました。
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<char,std::char_traits<char>,std::allocator<char> >): (0x0200004e).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >): (0x02000075).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_iterator<char,std::char_traits<char>,std::allocator<char> >): (0x02000091).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_const_iterator<char,std::char_traits<char>,std::allocator<char> >): (0x02000092).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_val<char,std::allocator<char> >): (0x02000097).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_val<wchar_t,std::allocator<wchar_t> >): (0x02000099).
Windows7でVisualStudio2010を使用しています。
このプロジェクトはコンパイルに使用されました。これは、一部のアンマネージコードのC ++ / CLI DLLラッパーであるため、共通言語ランタイムサポートが含まれています。変更されたのは、リンクした外部静的ライブラリが「更新」されたことです。リンク先のプロジェクトをコンパイルしようとすると、このエラーが発生します。
この問題に対するMicrosoftの「ヘルプ」は、「オブジェクトファイルに対してildasm –tokensを実行して、error_messageにリストされているトークンを持つタイプを見つけ、違いを探す」ことです。次に、このページを確認したところ、この/tokens
オプションは.exeファイルと.dllファイルにのみ有効であることがわかりました...しかし、これはリンカーエラーであるため、.dllファイルはまだ作成されていません。
のようなものを実行しようとしましildasm -tokens AssemblyInfo.obj
たが、発生する唯一のことは、この非常に役立つエラーメッセージでウィンドウが開くことです。
マイクロソフトに感謝します!
この問題のトラブルシューティングを続行する方法がよくわかりません。リリースビルドは正しく機能します-混乱しているのはデバッグだけです。std::string
ミックスのどこかで、タイプが異なるサイズか何かだと思います...
何か案は?