从 Visual Studio 2013 转换到 Visual Studio 2015 的问题
Posted
技术标签:
【中文标题】从 Visual Studio 2013 转换到 Visual Studio 2015 的问题【英文标题】:Problems converting from Visual Studio 2013 to Visual Studio 2015 【发布时间】:2016-02-10 07:43:17 【问题描述】:我有一个庞大的 C++ 程序,到目前为止,我一直在使用 VS 2013 Express 进行工作。试用版结束了,所以我决定迁移到 VS 2015 Professional。当我尝试编译和调试在 VS 2013 上完美运行的完全相同的代码时,我得到了这些错误。我怎样才能使这项工作?
1main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall sf::RectangleShape::RectangleShape(class sf::RectangleShape &&)" (__imp_??0RectangleShape@sf@@QAE@$$QAV01@@Z) referenced in function "public: __thiscall entity::entity(class entity &&)" (??0entity@@QAE@$$QAV0@@Z)
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class sf::RectangleShape & __thiscall sf::RectangleShape::operator=(class sf::RectangleShape &&)" (__imp_??4RectangleShape@sf@@QAEAAV01@$$QAV01@@Z) referenced in function "public: class entity & __thiscall entity::operator=(class entity &&)" (??4entity@@QAEAAV0@$$QAV0@@Z)
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall sf::Sprite::Sprite(class sf::Sprite &&)" (__imp_??0Sprite@sf@@QAE@$$QAV01@@Z) referenced in function "public: __thiscall entity::entity(class entity &&)" (??0entity@@QAE@$$QAV0@@Z)
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class sf::Sprite & __thiscall sf::Sprite::operator=(class sf::Sprite &&)" (__imp_??4Sprite@sf@@QAEAAV01@$$QAV01@@Z) referenced in function "public: class entity & __thiscall entity::operator=(class entity &&)" (??4entity@@QAEAAV0@$$QAV0@@Z)
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall sf::Text::Text(class sf::Text &&)" (__imp_??0Text@sf@@QAE@$$QAV01@@Z) referenced in function "public: __thiscall entity::entity(class entity &&)" (??0entity@@QAE@$$QAV0@@Z)
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class sf::Text & __thiscall sf::Text::operator=(class sf::Text &&)" (__imp_??4Text@sf@@QAEAAV01@$$QAV01@@Z) referenced in function "public: class entity & __thiscall entity::operator=(class entity &&)" (??4entity@@QAEAAV0@$$QAV0@@Z)
1>C:\SFML-2.3.2\SFML\Debug\SFML.exe : fatal error LNK1120: 6 unresolved externals
【问题讨论】:
"试用版结束" -- 嗯? VS 2013 Express 是免费的,应该可以无限期使用。 链接器与 VS 2013 相同 那么我具体可以做些什么来让它发挥作用呢? 【参考方案1】:SFML 似乎对某些类进行了注释,以便将它们的所有成员都放入 DLL 中。但是,VS2015 现在生成了移动构造函数和移动赋值运算符,而 VS2013 没有,而且库似乎没有正确处理这个问题。所有缺少的符号都是这些新功能。
具体来说,编译器似乎没有在客户端程序中生成实现,因为它希望它们存在于 DLL 中,但它们不存在于 DLL 中。您是重新编译 DLL,还是使用与 VS2013 相同的 DLL?重复使用旧的可能会导致此错误。
【讨论】:
以上是关于从 Visual Studio 2013 转换到 Visual Studio 2015 的问题的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 在转换为 2013 的项目上使用较旧的 2012 编译器
Visual Studio 2013 中的“每个文件”自定义构建步骤在哪里?
Visual Studio 编辑器可以从全大写转换为驼峰式吗? [复制]
将 VB.NET 代码从 Visual Studio Express 复制到 Microsoft Access 2013