DLL代表“动态链接库”,是Windows的概念。在Linux中,等效项是SO(共享对象)。
您可以在CodeProject中参考本文,以了解两者之间的相似之处和不同之处。
这个Stackoverflow问题非常相似。
小智 5
如果您拥有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
Run Code Online (Sandbox Code Playgroud)
您现在应该可以在Android项目中使用生成的.so文件。