我正在尝试从 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++,这段代码就不再可编译?
我已经在 64 位和 32 位的 Visual Studio 2010 上成功编译了这段代码,所以它一定是与将项目迁移到 Visual Studio 2015 相关的一些问题。
在 2012、2013 和 2015 版本的 Visual Studio 上编译会重现此错误,但不会重现 2010,因此似乎在 C++11 中引入了触发此问题的更改。
我究竟做错了什么?
阅读mem-fun 的答案不是 std 的成员,可能只是我需要包含一个我不需要包含在早期版本的 Visual Studio 中的标准库。如果这是真的,我需要哪个图书馆#include
?
我还创建了一个 GitHub 存储库,其中仅包含SDK 提供的原始未修改代码,用于测试目的(如果我自己打错了,这里似乎不是这种情况,但我把链接放在这里它可能会有所帮助)。
如果重要的话,我在 Windows 10 Professional x64 上使用 Visual Studio 2015 企业版。