簡體   English   中英

Android NDK可以在Android共享庫中包含一個Windows dll嗎?

[英]Can Android NDK include a windows dll to a an Android shared library?

甚至可以在ndk-build命令中鏈接/包含一個dll文件,並生成一個可以從android java代碼訪問dll函數的共享庫。

我一直在嘗試這樣做,我嘗試使用SWIG創建一個java包裝器代碼到dll而我沒有成功,然后我開始認為它甚至可能!

謝謝。

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

此外,Windows DLL往往是針對Intel x86 CPU編譯的,而大多數Android設備都有ARM CPU。 雖然存在Windows for ARM(Windows Phone,Windows RT等),但Android上不存在DLL應該存在的環境。

不可以.Windows DLL的格式與Android和Linux不同。

Windows使用稱為PE COFF的格式:“可移植可執行文件,通用對象文件格式”。 雖然COFF本身來自UNIX,但微軟有自己的版本。 存在進一步的不兼容性以支持.Net對象。 大多數UNIX和Linux使用ELF - 執行和鏈接格式。

即使它們是奇跡般地使用相同的格式,它仍然可能無法工作,因為機器架構必須是相同的,例如ARM(以及ARM的幾種配置)或Intel x86。

而且還有更多。 即使你設法讓DLL運行,它還有什么用? DLL通常具有其他外部依賴項,例如C運行時庫,MSVCRT或kernel.dll

那么,獲取源代碼並原生重新編譯它? 這可能DLLMain() ,但Windows DLL有時會有一個可選的DLLMain()入口點,Linux .so文件沒有直接的等價物。 那剩下的代碼怎么樣? 它是以便攜方式編寫的嗎? 它是否始終堅持使用ISO語言標准? 要真正可移植,必須以這種方式設計和編寫代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM