【发布时间】:2016-04-01 11:14:26
【问题描述】:
我有一个运行良好的测试项目。我尝试在我的其他项目中使用本地库(以及相同的方法),但出现此错误:
W/dalvikvm(22240): No implementation found for native Lcom/example/myapp/Serial;.open:(Ljava/lang/String;IIZ)Ljava/io/FileDescriptor;
这是 Serial 类中的 JNI 代码:
// JNI
private native static FileDescriptor open(String path, int baudrate,
int flags, boolean flowCon);
public native void close();
static {
System.loadLibrary("test_lib");
}
我的 libs 文件夹中的三个文件夹中有“libtest_lib.so”:armeabi、armeabi-v7a、x86。
我调试了应用程序,似乎在调用本机方法“open”之前需要调用“System.loadLibrary”。所以我看不到错误的其他选项..
【问题讨论】:
-
如果我没记错的话,方法签名不匹配。
-
但我使用了相同的方法(复制粘贴)和相同的库.. 那怎么可能呢?
-
我的意思是和其他项目一样。
-
在您的库中未找到
Serial.open()。您使用的是显式注册还是隐式注册?它是如何声明的?尝试使用nm列出库中的符号以查看实际字符串。另见developer.android.com/training/articles/…
标签: java android eclipse android-ndk native