BridJ找不到共享库的方法。我需要帮助来理解其中的原因。
该库是由JNAerator生成的。
Lib.so的mn -g:
w _Jv_RegisterClasses
U _Unwind_Resume@@GCC_3.0
00004970 T _Z11CreateClassv
00004960 T _Z11DeleteClassPv
....库的标题:
#ifdef __cplusplus
extern "C" {
#endif;
void* CreateClass(void);
void DeleteClass(void* hClass);
....Java代码:
@Runtime(CRuntime.class)
public class MobileclientLibrary {
static {
BridJ.register();
}
public static Pointer<? > CreateClass() {
return Pointer.pointerToAddress(CreateClass$2());
}
@Ptr
@Name("CreateClass")
protected native static long CreateClass$2();
public static void DeleteClass(Pointer<? > hClass) {
DeleteClass(Pointer.getPeer(hClass));
}
protected native static void DeleteClass(@Ptr long hClass);
...在日志中运行此应用程序时:
Mar 12, 2013 2:13:53 PM org.bridj.BridJ log
INFO: Failed to get address of method protected static native void Mobileclient.MobileclientLibrary.DeleteClass(long)但是成功地找到了CreateClass方法。
为什么会这样呢?
发布于 2013-03-26 23:22:35
这个错误消息意味着在你的头中声明了一个方法,但是没有在你的库中实现。验证JNAerator引用的库中是否确实实现了DeleteClass()。
https://stackoverflow.com/questions/15358562
复制相似问题