C语言 如何使用dlsym导入数组形式的共享对象符号

5ktev3wc  于 2023-03-01  发布在  其他
关注(0)|答案(1)|浏览(124)

我尝试手动从libncurses.so导入符号,这对于函数指针和普通变量(如stdscrCOLORS)来说效果很好,但是ncurses.h也定义了一个名为acs_map的全局数组:

extern NCURSES_EXPORT_VAR(chtype) acs_map[];

我如何使用dlsym()导入它?我的问题是acs_map是一个数组,而不是指针,所以我不确定是否允许它这样做:

chtype **ptr = dlsym(lib, "acs_map");
chtype *acs_map = *ptr;

但是我想我必须使用一个指针,因为我不能给一个数组变量赋一个新的值,是吗?那么使用dlsym()导入acs_map的推荐方法是什么?

but5z9lq

but5z9lq1#

由于数组衰减为指向其第一个成员的指针,因此可以使用指针类型来引用数组对象。

chtype *ptr = dlsym(lib, "acs_map");

相关问题