链接失败 [ilink32 错误] 致命:无法打开文件"类型"。奥布吉'



我一直在更新使用 c++ Builder 2010编译的旧遗留项目的代码,以使用 c++ Builder 10 Seattle进行编译。我大多不得不改变路径,很多dupIgnoreTDuplicates::dupIgnore,重新导入一些组件,如MSXMLMSMQ等。

首先是主项目以bpl和dll的形式使用的一堆子项目,最后是主项目的代码编译。

但是…链接失败:P

[ilink32 Error] Fatal: Unable to open file 'TYPES.OBJ'

我试图找到有关潜在问题的信息,许多人提到确保在Delphi编译器设置下的单元范围中提供System。但这个项目已经有了。还有什么可能导致这种情况?

获取信息。目前使用"经典"bcc32编译器编译。

包含路径:

$(BDSINCLUDE)windowsvcl;$(BDSINCLUDE)dinkumware;

Library Path:

$(BDSLIB)$(PLATFORM)$(Config);$(BDSLIB)$(PLATFORM)Releasepsdk;

我认为你应该找到字符串类型。在需要从找到的文件中删除此字符串后,在项目中的所有文件中添加OBJ。在此之前,不要忘记创建一个备份项目目录。

当我将旧项目从BCB5转换为bcb6时,我遇到了类似的问题。当我删除字符串"。Obj " filename from project file with "。我的问题解决了。

Project1中的字符串。BPR项目文件如下:

<OBJFILES value="Unit1.obj Types.obj"/>
修改后

:

<OBJFILES value="Unit1.obj"/>

我会先听从Tim D的建议。每当我开始使用新版本的编译器时,90%的导入旧项目都是由于我直接包括代码/头文件/目标文件并创建一个空白版本,然后在99%的时间内复制它。

在确保数据是新创建的,然后导入旧数据之后,我会检查遗留不兼容性问题。你在正确的道路上改变了你的"清单"。我还建议您确保为新编译器重写所有代码。这有助于代码兼容性和简化运行完成的项目。

最后,我会检查所有额外的数据(不是纯代码的文件,如头文件)仍然是可识别的编译器目前正在使用。(遗留可能会导致这个问题)

看起来编译器正在获取TYPES。由于多种因素(如c++依赖于平台),OBJ无法打开。TYPES.cpp可能在不同的操作系统中构建)你肯定可以解决我构建TYPES.cpp的问题。还要注意,这个CPP导入的库应该是兼容的,即使//如果你仍然得到错误,请继续进行完整的构建。或者点击链接。RSP或使用nm命令查找依赖对象并构建它们。

对于我来说,我在Delphi中包括Spin,这导致了错误ilink64 error fatal: unable to open file 'vcl.samples.spin.o'

所以我删除了Spin &在Pascal代码中包含了Vcl.Samples.Spin,并且链接器是满意的。

最新更新