我的iOS应用程序可以使用可选的外部第三方库。
我想到了使用这个答案( 弱链接 – 检查一个类是否存在并使用该类 )并在执行特定于此库的代码之前检测该类是否存在。
但是,我发现这个外部库不是作为Objective-C类编写的,而是作为C STRUTS和函数编写的。
是否有类似的技术可以让我检查C Strut或函数是否存在? 或者一些更好的替代方法,看看这个库是否在运行时存在?
struct
是编译时工件。 它们告诉编译器如何布局内存区域。 一旦完成, struct
变得不必要了。 与具有元数据的Objective-C类不同, structs
没有运行时存在。 这就是为什么不能在运行时检测它们的原因。
您可以通过调用dlopen
并传递其路径来检查是否存在动态库:
void *hdl = dlopen(path_to_dl, RTLD_LAZY | RTLD_LOCAL); if (hdl == NULL) { // The library failed to load char *err = dlerror(); // Get the error message } else { dlclose(hdl); }
如果dlopen
返回NULL
,则无法加载库。 您可以通过调用dlerror
获取其他信息。 完成后需要调用dlclose
。
AFAIK必须存在经典的C函数。 它在链接过程中是静态绑定的,它不像Objective-C mehtods那样在运行时动态绑定。
因此,当代码编译AND链接时没有错误或警告,那么你应该没问题。
结构相同。
以上就是c/c++开发分享Objective-C检查是否定义了Structs相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/518841.html