首页
社区
课程
招聘
[求助]SO中调用dlopen出错
发表于: 2016-4-7 17:04 8230

[求助]SO中调用dlopen出错

2016-4-7 17:04
8230
我在当前so中调用dlopen函数试图打开另一个so(名为libARM11.so),但报错了

代码如下:
handle = dlopen("libARM11.so", RTLD_NOW);
    if(handle == NULL){
        LOGI("dlopen [%s]", dlerror());
        return ;
    }

报错如下:
dlopen [dlopen failed: "libARM11.so" has unexpected e_machine: 40]

过程说明:
libARM11.so是我在另一个androidstudio项目中编译出来的so文件,平台肯定是一样的。
另外我把libARM11.so文件拷进了当前项目的lib\armeabi、lib\armeabi-v7a、lib\x86目录。
按照网上的指导在build.gradle中加入了 task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
        destinationDir file("$projectDir/libs")
        baseName "Native_Libs2"
        extension "jar"
        from fileTree(dir: "libs", include: "**/*.so")
        into "lib"
    }

    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn(nativeLibsToJar)
    }

不知道是不是还漏了哪里没有做?网上的资料太少了,所以在这里求教一下各位。

[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1647
活跃值: (920)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是不是编译的arm版本的so,然后用的时候是x86了 看你出错信息dlopen [dlopen failed: "libARM11.so" has unexpected e_machine: 40]  这个e_machine: 40是arm平台的
2016-4-7 17:22
0
雪    币: 5
活跃值: (476)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=王叔叔;1423940]是不是编译的arm版本的so,然后用的时候是x86了 看你出错信息dlopen [dlopen failed: "libARM11.so" has unexpected e_machine: 40]  这个e_machine: 40是arm平台的[/QUOTE]

并不是这个原因,我把当前项目生成的so文件另拷贝一份,用dlopen打开也报这个错误
2016-4-8 09:24
0
雪    币: 1647
活跃值: (920)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
lib\armeabi、lib\armeabi-v7a、lib\x86这三个目录下的so,应该是你那个as工程分别生成的对应的so吧,而不是生成一个so拷贝到这三个目录,你是不是用的x86的模拟器运行的?如果不是这个原因我也不知道了
2016-4-8 10:17
0
雪    币: 3586
活跃值: (769)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
5
模拟器是x86的吧
2016-4-8 10:20
0
游客
登录 | 注册 方可回帖
返回
//