2011-12-21 127 views
2

我有一個lib文件的API。 提供了lib文件.h文件。 現在我想調用Delphi中的lib文件,並使用它的功能。在delphi中使用lib文件。如何導入lib文件

怎樣的lib文件可以連接到德爾福?

更新:周圍是工作需要確定配發,如果我得到了一個dll?我如何將它鏈接到Delphi?

回答

5

您不能使用lib文件鏈接到Delphi的DLL。 .lib文件將由DLL的C或C++客戶端使用。

在Delphi中,你需要使用external關鍵字.H頭文件手動轉換爲帕斯卡進口機組。 Delphi源代碼中的Windows.pas單元的一個例子。事實上,你不能使用.lib文件實際上不是一個大問題,因爲無論如何你都必須翻譯.h文件。

+1

此答案假定已編譯的DLL文件可用於關聯的LIB文件。實際上可以將某些東西編譯爲LIB文件或DLL文件。如果DLL文件可用,只需轉換相關聯的頭文件(.H)就足夠了。但是,在代碼只能在LIB文件中使用的情況下,需要將Delphi完全轉換爲Delphi(如果可用)才能在Delphi中使用。也就是說,不幸的是,德爾福不支持.LIB,而許多其他編譯器已經支持它一段時間了。 – Glenn1234 2011-12-21 12:53:47

+0

@glen鏈接到一個靜態庫,你可以只是一個C編譯器 – 2011-12-21 13:00:47

+0

@大衛鏈接的lib成DLL:據我所知符號不會與出口標誌被宣佈以後,因而不可見? – 2011-12-21 13:44:18

0

在某些情況下,可以使用諸如Agner Fog(參見http://www.agner.org/optimize/?e=0,34,36)的目標文件轉換器之類的工具將.lib文件的成員提取爲.obj文件。

的語法是

objconv.exe libname.lib -lx

以提取所有成員。

通過提取所有成員都可以確保沒有遺漏的成員。但是,如果還有其他依賴關係(對其他.lib文件),則這些依賴關係將不會被解析並且必須手動解析。

還需要翻譯頭文件。

注意:目標文件格式也可以轉換。德爾福只理解OMF,而英特爾編譯器(例如)只吐出COFF。因此需要進行轉換,這也可以通過工具完成。

至於說在某些情況下,這只是工作,它肯定需要一定的專業知識在這方面,因爲編譯器將助益不大的錯誤信息(通常是消息刺激和誤導)。

相關問題