Tag: dlsym

在iOS中使用dlsym调用函数名称

我不能在iOS中通过名称调用函数吗? 我有一个名为getstring的C函数。 我打电话如下: void* handle = dlopen(NULL, RTLD_NOW); if (handle) { fp func = dlsym(handle, "getstring"); if (!func) responseField.text = [NSString stringWithUTF8String:dlerror()]; else { char* tmpStr = func(); responseField.text = [NSString stringWithUTF8String:tmpStr]; } } else { responseField.text = [NSString stringWithUTF8String:dlerror()]; } 执行此操作时, responseFiled.text被设置为dlsym(…): symbol not found 。 这意味着dlopen作品,但不dlsym 。 我使用nm转储二进制文件中的符号,并看到_getstring存在。 我检查了dlsym的手册 ,它说我不应该给这个名字加下划线。 无论如何,添加它并不能解决问题。 我究竟做错了什么? 在这里我曾经问过类似的问题,在Objective-C中用名字调用函数,然后在Mac上成功地在答案中尝试了它,所以这个问题似乎是iOS所特有的。