9

Crysis Wars SDK のソース コードから DLL をビルドしようとしていますが、以前のバージョンの Visual Studio (2005、2008、および 2010) で成功しました。私の特定の問題はこれです:

Error   4   error LNK2019: unresolved external symbol "struct CTypeInfo const & __cdecl
TypeInfo<char>(char *)" (??$TypeInfo@D@@YAABUCTypeInfo@@PAD@Z) referenced in function 
"void __cdecl SwapEndian<char>(char *,unsigned int)" (??$SwapEndian@D@@YAXPADI@Z)   
G:\Noctis\Mods\Noctis\Code\GameCVars.obj    GameDll

私は Visual Studio でコードをきれいにして再構築しようとしましたが、これがうまくいく可能性はありませんが、何も変わっていません。

ここに何か欠けているのでしょうか、それとも C++03 から C++11 に変更されたのでしょうか。つまり、このコードは古いバージョンの C++ に戻さないとコンパイルできなくなりますか?

このコードは、Visual Studio 2010 で 64 ビットと 32 ビットの両方で正常にコンパイルされているため、プロジェクトを Visual Studio 2015 に移行することに関連する問題である必要があります。

Visual Studio の 2012、2013、および 2015 バージョンでのコンパイルはこのエラーを再現しますが、2010 では再現しません。そのため、この問題をトリガーする変更が C++11 で導入されたようです。

私は何を間違っていますか?

mem-funへの回答を読むことは std のメンバーではありません。以前のバージョンの Visual Studio に含める必要のなかった標準ライブラリを含める必要があるだけかもしれません。これが本当なら、どのライブラリが必要#includeですか?

また、テスト目的で、SDK から提供された元の変更されていないコードのみを含む GitHub リポジトリを作成しました(私自身がタイプミスをした場合に備えて、ここではそうではないようですが、リンクをここに配置しました。役に立つかもしれません)。

問題があれば、Windows 10 Professional x64 で Visual Studio 2015 Enterprise エディションを使用しています。

4

1 に答える 1