2010-11-15 57 views
0

我有一個C++ Builder XE項目與幾個第三方控件。一些第三方控件沒有特定的XE包,所以我結束了2010年和編譯等...C++ Builder XE OBJ文件

經過許多回轉後,我可以讓我的項目編譯但不鏈接。

我得到的錯誤: [ILINK32錯誤]致命:無法打開文件 'THEMESRV.OBJ'

我使用LMD VCL工具(http://www.lmdinnovative.com/products/vcl /)我認爲這是從何而來。請參閱CBuilder 6項目和較舊版本的LMD工具中存在的Themesrv.obj文件。我的大型項目是將CBuilder6轉換爲XE,並下載了最新的2010版LMD控件; Builder6控件不能在XE下編譯。

現在,如果我創建一個全新的XE項目幷包含來自LMD組件的一些可疑控件,我會得到乾淨的編譯和鏈接。

我甚至做了一些愚蠢的事情,例如將themesrv.obj文件複製到我的項目的構建空間中,以獲取參考問題。

有關跟蹤此問題的任何建議嗎?我沒有在項目經理中明確包含任何LIB或OBJ文件,並且我已經通過項目XML文件查找虛假參考文件...

想法/建議?

回答

2

使用包/組件時,在這種情況下,您幾乎不需要.obj文件。它是一個.lib文件或一個.bpi文件(取決於你是否使用靜態/動態鏈接)

在這種情況下,你似乎已經知道你正在處理哪一組軟件包,所以你應該能夠爲你的項目添加正確的文件/路徑引用。 Bpi文件應該列在軟件包選項中,lib文件的路徑應該位於目錄和條件 - >庫路徑中,也可以明確地將.lib添加到您的項目中,但這不應該是必需的)

如果您不確定要使用哪個lib/bpi文件,tdump可以成爲您的盟友。在這些文件上運行tdump應該會顯示一行說明「implements:WHATEVER.obj」,以表示您需要的那一行。

+0

好吧,所討論的obj文件似乎並沒有列出IDE組件列表中列出的任何控件。我從LMD工具的Cbuilder6版本轉到了CBuilder 2010版本。其中一個顯而易見的變化是消除了主題,因爲他們現在可以在Borland產品本身中利用它(我猜)。我的項目在IDE中加載的所有組件都沒有問題(它以前沒有過),它編譯乾淨就不會鏈接。就好像IDE在某種程度上認爲我需要這個OBJ文件,並且我得到的是它沒有在鏈接器命令行中列出,如項目屬性中所示。 – Eric 2010-11-15 22:29:03

+0

@Eric,.obj文件對應一個源文件。軟件包/組件的工作方式是將所有單個對象綁定在一起。您正在尋找包含.obj文件數據的正確.lib/.bpi文件。 (鏈接器將停止詢問何時發現.lib/.bpi)您必須確保該文件是1)在Project-> Options-> Packages-> Build with runtime packages列表框中(假設複選框被選中) 2)可以在項目 - >選項 - >目錄和條件 - >庫路徑中列出的其中一個路徑上找到.lib文件,或者3).lib文件添加到項目中。 – 2010-11-16 00:18:42

+0

很明顯,我知道一個obj文件對應一個源文件。有問題的源文件不再是第三方組件的新版本,但CBuilder不斷抱怨說它由於某種原因缺少。這是一個孤立的OBJ文件,我不需要,但不知道如何說服C++ Builder!你會注意到我說這個問題不會在新項目中退出。 OBJ文件也不是所討論的XML項目的一部分。 – Eric 2010-11-19 00:23:58