【发布时间】:2020-08-27 09:10:00
【问题描述】:
我认为我理解“未解析的外部符号表示”的概念 - 对象都已编译,并且在链接阶段,链接器无法在任何地方找到该特定符号的定义(主体)。所以我想我要么必须以不同的方式使用符号,要么必须向项目中添加一些缺少的系统库。我不确定哪个是正确的以及如何检查(之前没有使用 RAD 的经验)。
我正在将一些旧代码(win95)转换为 win10,我在最新的 RAD Studio 10.3 下启动了一个新项目,并手动添加了所有源文件(添加到项目)。我在这里看到了一个建议,我应该确保编译器没有混合。我可以看到所有的源文件都是用 bcc32c 编译的。在文档中我可以看到 Exception 基本上只提供各种构造函数 http://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.Exception 。
在链接阶段我收到上面的错误 - [ilink32 Error] Error: Unresolved external 'System::Sysutils::Exception::{1173}...'
所有调用最初都是 Exception("constant") 或 Exception("constant" + AnsiStringVariable)。由于大多数问题是由旧的调用方案引起的,我尝试将其更改为 Exception(L"constant") 和 Exception(L"constant"+UnicodeString),但这显然不是问题。
感谢您的建议。
【问题讨论】:
-
我从该项目中取出与异常相关的代码并将其放入另一个(空)项目中,并且链接没有任何问题。此外,我搜索了原始项目中异常的所有用法,但看不到任何覆盖版本或类似的东西。如何验证编译器是否设置正确,例如试图编译 c 而不是 c++ 或不同的标准?谢谢。
标签: c++ rad-studio