2011-01-25 15 views

cevap

7

Android, bir Linux sisteminde çalışır - DLL dosyaları genellikle Windows için derlenen bytecode'tur.

4

DLL, "Dinamik Bağlantı Kitaplığı" anlamına gelir ve bir Windows konseptidir. Linux eşittir SO (Paylaşılan Nesne).

CodeProject'te, ikisi arasındaki benzerlikler ve farklılıklar için this article'a bakabilirsiniz.

Bu Stackoverflow question oldukça benzerdir.

+0

adresine bir cevabınız varsa, buradaki sorumuz burada açıklanmıştır. Bunu başarmanın bir yolu yok mu? –

+0

@Muhammed - Hayır yok. Neyi başarmaya çalışıyorsun? – Lior

+0

, lütfen buraya bir göz atın http://stackoverflow.com/questions/28393305/using-dll-library-in-android-application –

3

Eğer DLL için src dosyalarınız varsa, o zaman bunun yerine Android koduna olduğunu bağlantısıyla elf32 paylaşılan nesne olarak yeniden derlenmesine deneyin (- Aşağıda Windows çözümdür):


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 

Artık Android projenizde sonuçta oluşan .so dosyasını kullanabilmeniz gerekir.

İlgili konular