【问题标题】:Use dll files in android Application在android应用程序中使用dll文件
【发布时间】:2011-01-25 12:33:26
【问题描述】:

我可以在Android应用中使用dll文件(windows应用中常用)吗?

【问题讨论】:

标签: android dll


【解决方案1】:

Android 在 Linux 系统上运行 - DLL 文件通常是为 Windows 编译的字节码。

【讨论】:

    【解决方案2】:

    如果您有 DLL 的 src 文件,请尝试重新编译为 ELF32 共享对象,然后将其链接到您的 Android 代码(- 下面是 Windows 解决方案):


    set NDK_HOME=C:\Android\android-ndk-r9c   // customize this var for your own location   
    set LD_LIBRARY_PATH=%NDK_HOME%\platforms\android-18\arch-arm\usr\lib
    cd <C_SOURCE_DIRECTORY>
    
    REM -- TEMPORARILY COPY SOME LIBS COMPILER MAY NEED  
    copy %NDK_HOME%\platforms\android-18\arch-arm\usr\lib\crtbegin*.o .   
    copy %NDK_HOME%\platforms\android-18\arch-arm\usr\lib\crtend*.o .
    
    REM -- GENERATE YOUR OBJ FILE  
    %NDK_HOME%\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gcc.exe -g -I%NDK_HOME%\platforms\android-18\arch-arm\usr\include -c -fPIC YourLib.c -o YourLib.o
    
    REM -- GENERATE SHARED OBJ FROM OBJ FILE  
    %NDK_HOME%\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gcc.exe -g -L%NDK_HOME%\platforms\android-18\arch-arm\usr\lib -shared -o YourLib_so.so YourLib_so.o
    
    REM -- finally, remove the libraries previously copied to src directory
    
    del .\crtbegin*.o     
    del .\crtend*.o
    

    您现在应该可以在您的 Android 项目中使用生成的 .so 文件了。

    【讨论】:

      【解决方案3】:

      DLL 代表“动态链接库”,是一个 Windows 概念。 linux中的等价物是SO(Shared Object)。

      两者的异同可以参考CodeProject中的this article

      这个Stackoverflow question 非常相似。

      【讨论】:

      【解决方案4】:

      您可以在 Linux 上使用 Wine 来运行具有 dll-s 的程序。此外,您在 Android(也是 Linux 的一个版本)中拥有的 .apk 文件可能具有 dll-s,如果您的内部有一个可以运行这些 dll-s 的运行时。

      Unity 和 Xamarin 都支持 dll。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多