我遇到了一个奇怪的问题。 我有两个文件AC和BC如下: BC:无法调用返回指针的函数指针
#include <stdlib.h>
int *foo() {
int *x;
x = (int *) malloc(sizeof(int));
*x = 4;
return x;
}
我编译BC使用gcc来b.so: $ gcc的-o b.so -shared -fpic
交流:
#include <stdio.h>
#include <dlfcn.h>
int main() {
void *hdl;
hdl = dlopen("./b.so", RTLD_LAZY);
int *((*fn)(void));
int *x;
x = (*fn)();
fn = dlsym(hdl, "foo");
printf("%d", *x);
}
我使用编译AC GCC:
$ gcc的-fpic -ldl交流
现在,当我运行它:
$ ./a.out 分段故障
在那里我我的问题呢? 这在b.c中的函数没有返回指针时有效。
此外,我尝试使用dlerror()检查错误,但它没有报告。
初始化(或分配一个值到它),而不是限定。变量'fn'在使用前定义。 – 2010-08-06 05:59:29
哦,谢谢,那是我相信的一个错字。 现在,它的工作。 – Nilesh 2010-08-06 07:41:59
@Georg Fritzsche:Sie haben recht,danke。 – Beta 2010-08-06 17:37:10