2013-10-08 74 views

回答

5

否。Windows DLL與Android和Linux的格式不同。

Windows使用稱爲PE COFF格式:「移植可執行,通用對象文件格式」。儘管COFF本身來自UNIX,但Microsoft有自己的版本。爲了支持.Net對象存在進一步的不兼容性。大多數UNIX和Linux使用ELF - 執行和鏈接格式。

即使他們是由某種奇蹟,使用相同的格式,它可能仍然是行不通的,因爲機器結構必須是相同的,例如ARM(以及ARM的幾種配置)或Intel x86。

還有更多。即使您設法讓DLL運行,它還使用了什麼? DLL通常具有其他外部依賴關係,例如C運行時庫MSVCRT或kernel.dll

因此,獲得源代碼,並重新編譯本身呢?這可能會起作用,但Windows DLL有時具有可選的DLLMain()入口點,該文件與Linux .so文件沒有直接的等效關係。代碼的其餘部分呢?它是否以便攜式方式書寫?它始終堅持使用ISO語言標準嗎?爲了實現可移植性,代碼必須以這種方式進行設計和編寫。

+0

問題是關於共享庫,它應該是獨立的千恩萬謝,請在這裏看到http://ngspice.sourceforge.net/shared.html有UNIX共享庫也將有可能使用它? – simo

+0

@simo我想過,並問另一個問題[這裏](http://stackoverflow.com/questions/19280391/can-a-shared-library-so-file-built-for-linux-be-included-linked並且使用了),結果證明整個庫需要專門爲Android構建。 –

+0

我正在使用android sdk,是否有任何方法或解決辦法來管理導入我的原生android應用程序中的dll庫?我在這裏描述的問題,如果你有一個解決方案http://stackoverflow.com/questions/28393305/using-dll-library-in-android-application –

5

不可以。不是沒有構建整個Windows兼容性層。 Android與開箱即用的Windows不兼容。

此外,Windows DLL文件往往會被編譯爲英特爾x86處理器,而大多數的Android設備有ARM的CPU。雖然Windows for ARM存在(Windows Phone,Windows RT命名一些),但是Android上不存在DLL應該存在的環境。

+0

我正在使用android sdk,是否有任何方式或解決辦法來管理導入我的原生android應用程序中的dll庫?我在這裏描述的問題,如果你有一個解決方案http://stackoverflow.com/questions/28393305/using-dll-library-in-android-application –

+0

看到你的問題。你不能。考慮將C#重寫爲Java,並將.NET庫調用替換爲等效的Java庫調用。根據您使用的特定於Windows的API的多少,它可能可能也可能不可行。 –

+0

好了,你的迴應 –

相關問題