首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

能否將 Windows DLL 直接封裝為 Android SO 庫?NDK 移植實戰建議

     編輯:程式設計綜合問答

結論

不能直接封裝。 DLL 為 Windows PE 格式,依賴 Windows API/CRT;SO 為 Linux ELF 格式,依賴 Linux 系統調用/glibc。二者二進制不兼容,指令集亦不同(x86/x64 vs ARM)。

正確移植路徑

  1. 獲取 DLL 對應的 C/C++ 源碼。
  2. 在 NDK 工程中編寫 Android.mk / CMakeLists.txt,針對目標架構(arm64-v8a, armeabi-v7a, x86_64 等)編譯生成 .so。
  3. 若源碼含平台相關代碼(Win32 API、線程、Socket 等),需重寫為跨平台或 Android 實現(如用 pthread、Bionic libc、POSIX API)。
  4. 通過 JNI 暴露接口供 Java/Kotlin 調用。

替代方案(無源碼時)

  • 在服務端運行原 DLL(Windows 容器/VM),Android 通過 HTTP/gRPC 調用。
  • 尋找同功能的開源跨平台庫(如 OpenSSL、SQLite、FFmpeg)直接編譯 SO。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved