小编Ita*_*Ita的帖子

使用预建的共享库时,android ndk UnsatisfiedLinkError

我正在尝试创建一个链接到另一个共享库的共享库.

这是我的主要模块Android.mk:

TOP_LOCAL_PATH := $(call my-dir)
include $(call all-subdir-makefiles)

LOCAL_PATH := $(TOP_LOCAL_PATH)

include $(CLEAR_VARS)

LOCAL_CPP_EXTENSION := cpp


LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/ $(LOCAL_PATH)/lib/include
LOCAL_MODULE    := SightCore-jni
LOCAL_SRC_FILES := SightDemo.cpp SightCore-jni.cpp
LOCAL_SHARED_LIBRARIES := SightAPI
LOCAL_LDLIBS = -llog 

include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

我还有./lib目录中的预构建共享库及其自己的Android.mk文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := SightAPI
LOCAL_SRC_FILES := libSightAPI.so
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

include $(PREBUILT_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

SightCore-jni.cpp源文件是共享库的jni接口,使用该命令加载

System.loadLibrary("SightCore-jni");  
Run Code Online (Sandbox Code Playgroud)

在ndk-build过程中,我没有得到编译或链接错误.当我尝试运行应用程序并访问其中一个本机方法时,我得到了UnsatsfiedLinkError.我注意到如果在我的jni代码中禁用对SightAPI的引用并将拼写错误输入LOCAL_STATIC_LIBRARIES:= SightAPI行,则构建成功并且没有UnsatisfiedLinkError.
这意味着我拥有的jni代码很好(我确实它确定没问题......)

所以观察结果如下:
如果我用预构建的共享库编译共享库,我会得到一个损坏的 .so文件.

如果我编译相同的ndk项目而不链接到预构建的共享库,那么从java端加载共享库没有问题.

如果可以,请帮帮我.

提前致谢, …

android shared-libraries android-ndk

12
推荐指数
1
解决办法
1万
查看次数

VisualSVN如何回滚修订号?

我工作的公司遭遇了严重的服务器故障.在此失败期间,SVN存储库丢失.但仍有希望!我们有一个旧的备份库,我已经设法使用VisualSVN成功恢复.

我现在面临的问题是我无法更新/提交故障前检出文件夹.出现此问题的原因是:例如:本地文件夹的版本号为2361,而存储库本身的版本号为2290,较旧.

有办法解决这个问题吗?我可以更改本地副本或服务器副本上的修订号吗?

几点:

  • 我正在使用TortoiseSVN 1.6.6.
  • 我可以从repo签出文件夹,并且连接处于活动状态.
  • 我已经选择了我的一个文件夹并在其上使用了Relocate选项.这有助于我看到版本号有问题
  • 我已经尝试了一下合并选项,但这引导我现在特别的地方.(我愿意接受建议)

感谢您的时间,

伊达

svn tortoisesvn visualsvn

7
推荐指数
1
解决办法
2271
查看次数

使用JNI从本机线程调用Java方法时遇到问题(C++)

我有一个JNI问题,我希望有人可以帮助我.
我正在尝试从本机线程调用名为LUSOutputJNI的Java类的构造函数.
它一直在这个特定类的FindClass(...)上失败.

这是代码:

 LOGE("1");
    JNIEnv *env = NULL;

    LOGE("2");
    int res = -1;
    res = g_vm->AttachCurrentThread(&env, NULL);

    if(env == NULL)
    {
        LOGE("env is NULL, AttachCurrentThread failed");;
    }


    if(res >= 0)
        LOGE("AttachCurrentThread was successful");
    jclass clazz = NULL;
    jmethodID cid;

    jclass clazzESEngine;
    jmethodID callbackid;

    jobject jCoreOut;
    static jfieldID fid_ActionState = NULL;
    static jfieldID fid_nSpeed = NULL;
    static jfieldID fid_nType = NULL;
    static jfieldID fid_nInProcess = NULL;
    static jfieldID fid_nX = NULL;
    static jfieldID fid_nY = NULL;
    LOGE("3");

    static const char* …
Run Code Online (Sandbox Code Playgroud)

c++ java-native-interface android-ndk

5
推荐指数
1
解决办法
7591
查看次数