链接失败[ilink32错误]致命:无法打开文件'TYPES.OBJ'

时间:2015-09-30 15:45:14

标签: c++builder vcl c++builder-10-seattle

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

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

但......它没有链接:P

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

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

有关信息。现在使用“经典”bcc32编译器编译。

包含路径:

$(BDSINCLUDE)\windows\vcl;$(BDSINCLUDE)\dinkumware;

图书馆路径:

$(BDSLIB)\$(PLATFORM)\$(Config);$(BDSLIB)\$(PLATFORM)\Release\psdk;

5 个答案:

答案 0 :(得分:0)

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

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

最后,我会检查所有额外数据(非纯代码文件,如头文件)仍然可以识别当前正在使用的编译器。 (遗产可能导致这一点很挑剔。)

答案 1 :(得分:0)

看起来编译器正在获取TYPES.OBJ但由于多种因素而无法打开(如C ++与平台相关.. TYPES.cpp可能在不同的操作系统中构建)您可以确定解决问题我的建筑TYPES.cpp ..还要注意这个CPP导入的库应该是可编译的//如果你仍然得到错误请继续完整构建..或者检查link.rsp或使用nm命令查找依赖的oblect和建立所有这些。

答案 2 :(得分:0)

我认为您需要在找到的文件中删除此字符串后,在项目的所有文件中找到字符串TYPES.OBJ。在此之前不要忘记创建一个备份项目目录。

当我将旧项目从BCB5转换为BCB 6时,我遇到了类似的问题。当我用" .obj"删除字符串时项目文件中的文件名为" .bpr"扩展我的问题解决了。

Project1.bpr项目文件中的字符串如下:

<OBJFILES value="Unit1.obj Types.obj"/>

修改后:

<OBJFILES value="Unit1.obj"/>

答案 3 :(得分:0)

在您需要从找到的文件中删除此字符串之后,我认为您应该在项目中的所有文件中找到字符串TYPES.OBJ。在此之前,请不要忘记创建备份项目目录。

当我将旧项目从BCB5转换为BCB 6时,我遇到了类似的问题。当我从扩展名为“ .bpr”的项目文件中删除了文件名为“ .obj”的字符串时,我的问题就解决了。

Project1.bpr项目文件中的字符串如下: 修改后:

答案 4 :(得分:0)

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

所以我删除了 Spin 并在 Pascal 代码中包含了 Vcl.Samples.Spin 并且链接器很满意。此错误仅在 C++ Builder 上引起,不在 Delphi 中引起。