首页
社区
课程
招聘
[求助]JNI编程,怎么在native中定义_init段呢?
2015-4-15 10:30 9712

[求助]JNI编程,怎么在native中定义_init段呢?

2015-4-15 10:30
9712
JNI编程,怎么在native中定义_init段呢?在elf的dynamic段中能够显示出init段的内容??这个函数段该怎么定义呢,。。求指教

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (11)
雪    币: 188
活跃值: (167)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
cacorothuo 2015-4-15 17:44
2
0
extern "C" void _init(void) {}
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
yezhulove 2015-4-15 18:02
3
0
__attribute__((constructor))
void on_load(void) {
    Dl_info dl_info;
    dladdr((void *)on_load, &dl_info);
    char fullpath[PATH_MAX];
    realpath(dl_info.dli_fname, fullpath);

    fprintf(stderr, "module %s (%s) loaded\n", dl_info.dli_fname, fullpath);
}
雪    币: 168
活跃值: (81)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bunnyrene 2015-4-15 18:23
4
0
这个是load的方法,直接放到ndk中编译出错啊??就只需要定义一个_init段,不需要有内容,只要在elf的dynamic里面显示出来init的定义就好了
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
yezhulove 2015-4-15 19:52
5
0
和load没啥关系,只是函数名字叫这个而已。或者你写个带构造函数的全局对象就行。
雪    币: 188
活跃值: (167)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
cacorothuo 2015-4-15 21:09
6
0
构造函数是在init_array里面。他说的是init
雪    币: 48
活跃值: (37)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
dssljt 2015-4-16 10:05
7
0
这个Init该怎么初始化??
雪    币: 168
活跃值: (81)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bunnyrene 2015-4-16 14:37
8
0
找到解决办法了。。。在native里定义
__attribute__((constructor))
void _init(void) {
}
就会初始化init字段
雪    币: 188
活跃值: (167)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
cacorothuo 2015-4-16 15:56
9
0
之前就已经留言告诉了。。不用__attribute__((constructor))都可以自动生成的
雪    币: 244
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ShadoWWinL 2015-4-16 21:52
10
0
extern "C" void _init(void)--》init
__attribute__((constructor)) --》init_array
雪    币: 168
活跃值: (81)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bunnyrene 2015-4-17 08:11
11
0
不用的话在dynamic字段里面初始化不了init的
雪    币: 188
活跃值: (167)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
cacorothuo 2015-4-17 10:01
12
0
答案都告诉你了。你自己试试不就知道了
游客
登录 | 注册 方可回帖
返回