1

我已经.so使用 android NDK 创建了文件。在 xxx.java 类中,我添加了一些从 c/c++ 文件调用的本地方法。我在自己的方法中调用这些本机方法,例如如下所示,

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....

如何解决上述问题?

提前致谢

4

2 回答 2

1

需要将libprint.so其放在 libs 文件夹中,然后使用以下命令加载:

System.loadLibrary("print");

可能是java.lang.UnsatisfiedLinkError因为 c 函数名称与您的 java 类的完全限定名称不匹配。
我建议按照这个链接: http: //mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/

于 2012-09-24T08:00:58.507 回答
1

.so 文件应该放在 eclipse 的 libs-->armeabi-->xxx.so 文件夹中。然后在 Eclipse 中创建 build.properties 文件并通过这样做提及 xxx.so 文件的路径

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 
于 2012-09-25T11:23:57.977 回答