项目迁移后未解决的外部

问题描述

我正在使用 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. 编译并运行。

如果这样做没有帮助,则有时会手动#include将包含组件的VCL标头包含到*.h文件中,这有助于重置编译器/链接器,因此请在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,...或新版本有什么扩展),因此在编译器按需运行时备份它是一个好主意... strong>有时会自行损坏,尤其是对于大型项目。

有时候,如果您移动,也会有所帮助:

#pragma hdrstop

线到不同的位置(上下几行)。如果幸运的话,它还可以重置编译器/链接器,然后将其移至原始位置。但是,这仅偶尔起作用(例如1:20)。而且您还需要尝试几个位置

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

一次(也是在从BCB5迁移到BDS2006之后),即使这样对一个矿山项目也没有帮助。我还被迫创建表单(具有所有组件,但没有功能,只是将它们放在表单上),然后从旧的App复制内容。但是,如果组件太多,这将是一件痛苦的事情……

,

我发现,由ide将我的10.3.3项目转换为10.4.1所产生的大多数问题可以通过如下所述的烦人过程来解决:

  1. 打开表单。
  2. 在“设计”选项卡上,切换到文本视图。
  3. 切换为veiw。
  4. 在项目下,仅重新编译表单。
  5. 现在运行项目。

这解决了我大多数未解决的问题,除了_CG _ *。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...