首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BridJ:无法获取方法的地址

BridJ:无法获取方法的地址
EN

Stack Overflow用户
提问于 2013-03-12 18:20:33
回答 1查看 982关注 0票数 3

BridJ找不到共享库的方法。我需要帮助来理解其中的原因。

该库是由JNAerator生成的。

Lib.so的mn -g

代码语言:javascript
复制
         w _Jv_RegisterClasses
         U _Unwind_Resume@@GCC_3.0
00004970 T _Z11CreateClassv
00004960 T _Z11DeleteClassPv
....

库的标题:

代码语言:javascript
复制
#ifdef __cplusplus
extern "C" {
#endif;
void* CreateClass(void);
void  DeleteClass(void* hClass);
....

Java代码:

代码语言:javascript
复制
@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);
    ...

在日志中运行此应用程序时:

代码语言:javascript
复制
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方法。

为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2013-03-26 23:22:35

这个错误消息意味着在你的头中声明了一个方法,但是没有在你的库中实现。验证JNAerator引用的库中是否确实实现了DeleteClass()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15358562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档