Ios dlopen在应用程序终止后返回NULL

Ios dlopen在应用程序终止后返回NULL,ios,dlopen,dynamic-library,Ios,Dlopen,Dynamic Library,我正在使用dlsym加载私有API(iOS 9.3上需要): 当我关闭应用程序(在多任务模式下从底部滑动)并重新启动应用程序时,它在第二行崩溃 handle等于NULL,我没有成功加载lib两次 我试图用dlerror()获取错误,但它也返回NULL 有人知道这个问题吗?如何解决 编辑: 这是完整的代码;使用if(handle!=NULL)应用程序不会崩溃,但私有框架也不会加载 #define CORETELPATH "/System/Library/PrivateFrameworks/Core

我正在使用
dlsym
加载私有API(iOS 9.3上需要):

当我关闭应用程序(在多任务模式下从底部滑动)并重新启动应用程序时,它在第二行崩溃

handle
等于
NULL
,我没有成功加载lib两次

我试图用
dlerror()
获取错误,但它也返回
NULL

有人知道这个问题吗?如何解决

编辑: 这是完整的代码;使用
if(handle!=NULL)
应用程序不会崩溃,但私有框架也不会加载

#define CORETELPATH "/System/Library/PrivateFrameworks/CoreTelephony.framework/CoreTelephony"

handle = dlopen(CORETELPATH, RTLD_LAZY);
            NSLog(@"DL Error : %s", dlerror());
            if (handle != NULL) {
                _CTServerConnectionCreate = dlsym(handle, "_CTServerConnectionCreate");
                CTResultConnection = _CTServerConnectionCreate(NULL, simMonitorCallback, NULL);
                _CTServerConnectionAddToRunLoop = dlsym(handle, "_CTServerConnectionAddToRunLoop");
                _CTServerConnectionAddToRunLoop(CTResultConnection, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
                _CTServerConnectionRegisterForNotification = dlsym(handle, "_CTServerConnectionRegisterForNotification");
                _CTServerConnectionUnregisterForNotification = dlsym(handle, "_CTServerConnectionUnregisterForNotification");
                _CTServerConnectionRegisterForNotification(CTResultConnection, kCTSIMSupportSIMStatusChangeNotification);
                _CTServerConnectionGetSIMStatus = dlsym(handle, "_CTServerConnectionGetSIMStatus");
                _CTServerConnectionCopyMobileEquipmentInfo = dlsym(handle, "_CTServerConnectionCopyMobileEquipmentInfo");
            }

将私有API路径更改为公共API路径似乎可以解决这个问题;对私有API的调用仍然有效:

#define CORETELPATH "/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony"

请显示您的错误处理代码(即检查
!handle
和错误报告)。另外,
CORETELPATH
设置为什么?这里是:
#定义CORETELPATH”/System/Library/privateframes/corethony.framework/corethony“
。我已经编辑了上一条消息-使用完整的代码
dlerror()
即使使用PrivateFramworks也不会报告任何内容
#define CORETELPATH "/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony"