我有一个名为 testdynamic 的函数,它使用 dlopen 和 dlsym 动态调用。现在,我创建了一个结构:
typedef struct BigStruct{
char el[2000];
}BigStruct;
它用于存储函数的参数。然后,我将空间分配给一个名为:
void *cur = (void*)malloc(totalSize);
其中,totalSize 是参数的大小。我事先有这个信息。
之后,我将所有参数复制到 cur。
然后,我将它转换为 BigStruct,如下所示:
BigStruct *bg;
bg = (BigStruct*)cur;
并像这样运行它:
void* ch = (void*)testdynamic(*bg);
现在,当我打印参数时,在函数 testdynamic 中,我得到了所有数据类型(如char**
、int*
、 int 等)的正确值。
唯一不起作用的数据类型是 char*。即使在使用 调用函数之前*bg
,bg->el 的内容对于 char* 也是正确的。但是,调用后,出现错误。
可能是什么问题呢?
这是testdynamic的代码
char* testdynamic(char* x, char* y){
printf("%s %s\n", x, y);
return "hello";
}
我想从我的代码中将参数传递给函数 testdynamic。
这个 testdynamic 可以是可以接受任何类型的任何参数的任何函数。
我在运行时获得有关该函数的信息。由于 char* 的大小为 1,我将所有内容都转换为 char*,然后将其传递给函数。
此时,如果我在 testdynamic 中打印任何类型为char*
.