c/c++语言开发共享Objective-C检查是否定义了Structs

我的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

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐