我不能在 iOS 中按名称调用函数吗?我有一个名为getstring
. 我这样称呼它:
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 特有的。