2012-09-24 60 views
1

我創建了使用android NDK的.so文件。在xxx.java類中,我添加了一些本地方法來從c/C++文件調用。這些本地方法,我在我自己的方法調用比如像下面,java.lang.unsatisfiedlinkerror。在eclipse中爲Android應用程序添加.so文件

static 
    { 
    System.loadLibrary("print"); 
    } 
    public native String print(String pM,int len); 
    public native int openPrint(); 

以上的本地方法在我的方法調用,這樣其他Android應用程序開發人員可以爲API的使用。

public static void foo(){ 

     openPrint() 
    } 

這是對的嗎?

爲此,我創建了一個myprint.Jar文件。它也包括libprint.so文件。

我上面的jar文件添加其他應用程序,這是一個從xxx.java導入類,但每當我試圖運行它拋出一個錯誤,指出

FATAL Exception, 
    java.lang.UnsatisifiedLinkerror.... 

如何解決上述問題的應用程序?被投入

在此先感謝

+0

入住這http://stackoverflow.com/questions/4813336/java-lang-unsatisfiedlinkerror – Santosh

回答

1

.so文件應該放在libs - > armeabi - > xxx.so文件夾中。然後在Eclipse中創建build.properties文件,並通過做這樣

open build.properties file. 

    then click on Add Library button. 

    then one edit box will appear write below line in the edit box. 



external.libs.dir=libs 
1

libprint.so需要libs文件夾中,然後裝用:

System.loadLibrary("print"); 

可能是你java.lang.UnsatisfiedLinkError因爲,C函數名稱不匹配Java類的完全限定名稱。
我建議關注此鏈接:http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/

+0

感謝烏爾提xxx.so文件的路徑rply。我在xxx.java中添加了System.loadLibrary。並創建了myprint.jar。是否有必要在Android應用程序中添加我添加.jar文件? – Prasad

+0

http://stackoverflow.com/questions/8434529/how-to-load-a-native-shared-object-in-a-jar-from-an-android-application – Nermeen

相關問題