编译Orbiter示例时出现C ++错误 - LNK2019未解析的外部符号

问题描述 投票:0回答:1

在尝试为Orbiter太空飞行模拟器编译“样本”项目时,我遇到了一个非常具体的问题。我正在尝试使用Visual Studio 2019的预览版编译“Atlantis”航天飞机的样本,我收到的错误如下:

LNK2019 unresolved external symbol "__declspec(dllimport) public: __thiscall VESSEL2::VESSEL2(class VESSEL2 &&)" (__imp_??0VESSEL2@@QAE@$$QAV0@@Z) referenced in function "public: __thiscall Atlantis_SRB::Atlantis_SRB(class Atlantis_SRB &&)" (??0Atlantis_SRB@@QAE@$$QAV0@@Z)

这发生在Atlantis_SRB项目中。我的代码位于:

C:\ Orbiter2016 \ Orbitersdk \ \样品亚特兰蒂斯\

我在软件工程方面有很多经验,但我是C ++菜鸟。我已经看过这个错误的一般帮助,所以我知道有些东西需要联系起来,但我不确定是什么,或者怎么做。

我在Orbiter论坛上看了这个问题:

https://www.orbiter-forum.com/showthread.php?t=24247

它建议在项目>属性下检查以下内容:

链接器 - 输入 - 附加库

链接器 - 高级 - 库搜索路径

当我在第一个下面检查时,我在链接器>输入>附加依赖项下有以下内容:

orbiter.lib;orbitersdk.lib;%(AdditionalDependencies)

第二个位置(链接器 - 高级 - 库搜索路径)不存在。

当“引用”中缺少dll并且知道如何快速解决它时,我习惯了C#引用错误,但我不知道如何处理这种类型的C ++问题。

我如何确定具体问题是什么,我需要链接什么,在哪里(以及如何?!)

c++ visual-studio-2019 orbiter
1个回答
0
投票

我在优秀的Orbiter论坛上发布了这个问题,并且cyph0r提供了一个可以与VS2017一起使用的修复程序:

https://www.orbiter-forum.com/showthread.php?p=589264&posted=1#post589264

基本上orbiter.lib似乎只是完全兼容'开箱即用'直到VS2013,显然亚特兰蒂斯样本使用VS2013编译得很好。 (我回到使用VS2017并实现了cyph0r的修复,这有效 - 我还没试过VS2019):

这是错误的重要部分:

__declspec(dllimport) public: __thiscall VESSEL2::VESSEL2(class VESSEL2 &&)" (__imp_??0VESSEL2@@QAE@$$QAV0@@Z) referenced in function "public: __thiscall Atlantis_SRB::Atlantis_SRB(class Atlantis_SRB &&)

它表明Atlantis_SRB类声明正在引用移动构造函数,这在VS2017中找不到。这是指示正在引用移动构造函数的部分:

__declspec(dllimport) public: __thiscall VESSEL2::VESSEL2(class VESSEL2 &&)

修复是通过编辑Atlantis样本中的Atlantis.h文件来消除此移动构造函数存在的期望。 Orbiter论坛上问题的链接提供了您需要做的全部细节。

© www.soinside.com 2019 - 2024. All rights reserved.