我想在Borland C++ Builder 4中编译一个旧项目。我有一个可执行的exe文件和源文件,因此有人必须先设法编译它。但是,当我打开该项目,检查项目是否在资源中的所有必要文件并尝试编译它,我不断收到以下链接器错误:Borland C++ Builder 4 [链接器错误]无法解析的外部
[链接器错误]未解析的外部'_fastcall TMapperForm :: Button1Click (系统:: TObject *)'参考... \ Unit1.obj
我可以看到它无法在库中找到一个对象,但我不知道如何解决它,因为obj文件具有相同名称作为主要的cpp文件与项目的其他文件在同一个文件中,并且看起来很好。
我已经查看了这里提供的类似链接器错误的答案,但没有提供这些建议为我工作。我已经尝试了以下内容:
- 将.obj文件添加到项目资源中。
- 尝试手动添加编注线,例如
#pragma link (Unit1.obj)
- 确保在项目>选项>目录中选择了正确的包含和库路径。
- 检查是否添加了所有包。
这似乎没有工作。我对C++和C++ Builder相当陌生,所以我希望这是一件小事。
有没有人看到这个特定的错误?
它不是Unit1.obj它找不到,那是引用缺少方法的文件。如果我不得不猜测,我猜测源代码实际上缺少TMapperForm类中Button1Click的定义。尝试在设计器中打开表单,然后双击Button1。如果定义了一个OnClick处理程序,它会将您带到源代码中,并且您可以修复引用以指向该方法。如果它没有,则会为您创建一个Button1Click方法存根。 –
@DavidDean非常感谢你。在TMapperForm类的头文件中定义了一个Button1对象,我错过了它。显然,原始开发者开始添加一个额外的按钮,但从未使用它,然后将定义留在类def中。 – laika
当您保存项目(或任何文件)并且您的处理程序代码为空时,有时会发生这种情况。 BCB优化它,但有时会留下按钮处理程序调用(尤其是如果它是手动添加的)...另外,您需要小心使用rem线,因为如果您删除它们并优化没有这些功能的功能,它可以将1或两行附近的功能使得一塌糊涂... – Spektre