2015-09-30 187 views
40

我一直在更新代码FOMR使用C++ Builder的2010C++ Builder的10西雅图编译一个旧的遗留项目构建。我主要不得不改变路径,很多dupIgnoreTDuplicates::dupIgnore,重新导入一些部件,如MSXMLMSMQ链接失败[ilink32错误]致命:无法打开文件“TYPES.OBJ”

首先对一群子项目的主项目BPL和dll的形式使用最后编译主项目的代码。

但是......它失败的连接:P

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

我试图找到潜在的问题和许多提及确保System单位范围Delphi编译器供应信息设置。但是这个项目已经存在。还有什么可能导致这种情况?

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

包含路径:

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

库路径:

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

您可以尝试通过删除或评论它们来刷新包含(.h)和编译指示(.cpp)列表。保存时,它们会再次自动生成。链接器错误确实发生在编译exe后,对吗? –

+1

我不确定我是否理解“列表”的含义?我猜你只是指普通的include和pragma指令? 如果这是你的意思,它们在很多文件中都是相当多的。当你包含来自全国各地的文件时,ide如何知道哪些文件需要“重新创建”? – inquam

+1

抱歉,对于不准确的描述。当您在窗体上放置组件时,会自动添加一些include和编译指示。 当我将一个较旧的应用程序移植到XE2时,我遇到了这个问题,因为一些包含的direktives发生了变化。 –

回答

0

我会按照最初由蒂姆·d给出的建议。每当我开始使用新版本的编译器时,90%的导入旧项目是由于我直接包含代码/头文件/目标文件并创建一个空白版本,然后在99%的时间内复制它以修复它。

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

最后,我会检查所有额外的数据(不是纯代码的文件,如头文件)仍然可以识别当前正在使用的编译器。 (遗留系统可能会导致此问题变得尖锐。)

相关问题