c++builder - 项目迁移后 Unresolved external 问题

标签 c++builder vcl unresolved-external

我正在使用C++Builder 10.4.1。我已经迁移了一个包含 3 个表单的简单项目。主窗体包含一个TDriveComboBox。当我尝试编译时出现以下错误:

[ilink32 Error] Error: Unresolved external 'Vcl::Filectrl::TDriveComboBox::' referenced from (then it lists the path to the main form's OBJ file)
[ilink32 Error] Error: Unresolved external '__fastcall Vcl::Filectrl::TDriveComboBox::GetDrive()' referenced from (then it lists the path to the main form's OBJ file)

我什至尝试删除TDriveComboBox并替换它,但这没有帮助。 有什么问题以及如何解决它?

最佳答案

我愿意:

  1. 删除所有临时文件(obj、exe、tds...)
  2. 在存在此问题的表单上添加新的临时 TDriveComboBox
  3. 编译并运行。

如果这没有帮助,有时手动将组件包含在 *.h 文件中的 VCL header 有助于重置编译器/链接器,因此搜索 VCL inc 文件夹对于 TDriveComboBox 在我的系统中它在这里:

c:\Program Files (x86)\Borland\BDS\4.0\include\vcl\FileCtrl.hpp

因此添加如下内容:

#include <FileCtrl.hpp>

#include <vcl\\FileCtrl.hpp>

进入您的表单*.h文件...但即使这样有时也会失败。 根据我的经验,问题在于项目文件(*.bds、*.bdsproj、... 或新版本获得的任何扩展名),因此最好在编译器正常工作时备份它...因为它有时会自行损坏,尤其是对于大型项目。

有时如果你搬家也会有帮助:

#pragma hdrstop

行到不同的位置(向下或向上几行)。如果幸运的话,它还可以重置编译器/链接器,然后您可以将其移动到原始位置。然而这只是偶尔有帮助(比如 1:20)。而且您还需要尝试几个位置

如果没有任何效果只需创建新的空项目并将表单和内容复制到其中并将其添加到项目中...每个表单有 3 个文件(*.h,*. cpp,*.dfm) 并且不要忘记将您需要的任何内容添加到您的项目中 (DLL *.lib,...) 如果它没有直接与 #pragma link 链接您的应用使用的第 3 方自定义内容

有一次(也是从 BCB5 迁移到 BDS2006 之后),即使这对我的一个项目也没有帮助。我还被迫创建表单(包含所有组件,但没有功能,只需将它们放在表单上),然后从旧应用程序复制内容......但是,如果你有太多组件,这将是一个痛苦......

关于c++builder - 项目迁移后 Unresolved external 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64723958/

相关文章:

使用模板链表和指针传递的 C++ 未解析外部符号

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

windows - 是什么导致桌面盾牌图标覆盖在 *SOME* 桌面上

c++ - bcc32 : strange error when specialising on `std::vector<bool>`

c++ - XML 解析器 - 数据绑定(bind) C++ 生成器

dll - C++ Builder XE 未链接所有运行时 DLL

algorithm - 有哪些算法/优化用于计算数组中元素的条件子集?

delphi - C++ Builder 和 chm 帮助文件

delphi - TDBGrid 选定的行索引 : How to get

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?