2013-06-03 99 views
4

是否有任何工具如Borland「coff2omf.exe」用於將Borland OMF LIB格式轉換爲 MS VC++ COFF LIB格式?OMF格式爲COFF格式

實際上我想在delphi中創建.obj文件並在MSVC++中使用它。

+0

你的Delphi代碼有多複雜?它是否使用Delphi RTL的任何部分? –

回答

4

據我所知,沒有這樣的工具。使用Agner Fog的目標文件轉換器(Arnaud提到的工具),我從未成功將Delphi單元轉換爲可鏈接到MSVC程序的COFF .obj。

我確實認爲使用Delphi源代碼編譯它,然後在MSVC中使用生成的對象是不現實的。另一個方向是很有可能的。您可以將C代碼編譯爲一個對象,並將該對象鏈接到您的Delphi可執行文件。當你這樣做時,你需要解決編譯對象所具有的任何依賴關係。

但是,將Delphi對象鏈接到C/C++程序將需要使用Delphi RTL的任何部分。除非你不使用Delphi RTL的任何部分,這似乎很難處理。

在你的情況,我認爲你的選擇是:

  1. 代碼移植到C或C++。
  2. 將Delphi代碼編譯爲一個動態庫並鏈接到您的C++程序。
+0

:謝謝你的建議,但我認爲這是可能的。我的一位老朋友完成了這項工作,他將delphi.obj轉換爲coff並用於vC++ dll中,用於AV引擎。 (請原諒我的英文不好) – Behrooz

+0

我從來沒有找到任何有效的工具。我從未能夠使Arnaud提到的工具與Borland OMF一起工作。 –

7

是的,有這樣的工具。

請參閱this tool

此實用程序可用於轉換所有32位和64位x86平臺的COFF/PE,OMF,ELF和Mach-O格式之間的目標文件。可以修改對象文件中的符號名稱。可以跨平臺構建,修改和轉換功能庫。可以轉儲對象文件和可執行文件。還包括支持SSE4,AVX,AVX2,FMA和XOP指令集的非常好的反彙編程序。包含源代碼(GPL)。手冊。

請注意,這個網站是我瞭解低級優化的最佳資源。如果要處理性能,所有鏈接的信息都值得一讀。

但是,對於使用Delphi生成的.obj與VC++,它將不容易實現,但對於很小部分的代碼。您需要在代碼中使用Delphi RTL。外部.dll好得多。還要注意一些類型(如字符串或動態數組)在VC++中不易修改。

+0

您有使用此工具的經驗嗎?我從來沒有運氣過。 –

+1

我玩了很多時間。完美的作品。但是大多數情況下,當然,你需要知道低級別的東西。 –

+0

我想,當你將Pascal切換到不使用Delphi RTL的時候,很容易將它移植到C! –