2015-09-30 223 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%的時間內複製它以修復它。

在確認數據是新建的,然後通過它導入舊數據後,我會檢查遺留的不兼容問題。你正在改變你的「名單」正確的道路。我還建議您確保所有的代碼都是爲新編譯器重寫的。這有助於代碼兼容性和簡化運行完成的項目。

最後,我會檢查所有額外的數據(不是純代碼的文件,如頭文件)仍然可以識別當前正在使用的編譯器。 (遺留系統可能會導致此問題變得尖銳。)

相關問題