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

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

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 188
活跃值: (187)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
extern "C" void _init(void) {}
2015-4-15 17:44
0
雪    币: 1787
活跃值: (345)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
__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);
}
2015-4-15 18:02
0
雪    币: 158
活跃值: (216)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个是load的方法,直接放到ndk中编译出错啊??就只需要定义一个_init段,不需要有内容,只要在elf的dynamic里面显示出来init的定义就好了
2015-4-15 18:23
0
雪    币: 1787
活跃值: (345)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
和load没啥关系,只是函数名字叫这个而已。或者你写个带构造函数的全局对象就行。
2015-4-15 19:52
0
雪    币: 188
活跃值: (187)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
构造函数是在init_array里面。他说的是init
2015-4-15 21:09
0
雪    币: 48
活跃值: (37)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
这个Init该怎么初始化??
2015-4-16 10:05
0
雪    币: 158
活跃值: (216)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
找到解决办法了。。。在native里定义
__attribute__((constructor))
void _init(void) {
}
就会初始化init字段
2015-4-16 14:37
0
雪    币: 188
活跃值: (187)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
之前就已经留言告诉了。。不用__attribute__((constructor))都可以自动生成的
2015-4-16 15:56
0
雪    币: 246
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
extern "C" void _init(void)--》init
__attribute__((constructor)) --》init_array
2015-4-16 21:52
0
雪    币: 158
活跃值: (216)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不用的话在dynamic字段里面初始化不了init的
2015-4-17 08:11
0
雪    币: 188
活跃值: (187)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
答案都告诉你了。你自己试试不就知道了
2015-4-17 10:01
0
游客
登录 | 注册 方可回帖
返回