处理 SDL 和 Paypal 配置 -ObjC 冲突的问题

问题:

因为项目要集成 SDL 库,但是如果在 Other Linker Flags 中配置了 -ObjC 的话 SDL 就会报错:

Undefined symbols for architecture arm64:
"_SDL_main", referenced from:
-[SDLUIKitDelegate postFinishLaunch] in libSDL2.a(SDL_uikitappdelegate.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

而删除 -ObjC 的话 Paypal 又会报错:

Undefined symbols for architecture arm64:
"OBJC_CLASS$_RCTReconnectingWebSocket", referenced from:
objc-class-ref in libReact.a(RCTPackagerConnection.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

解决方法:

  • 在 Other Linker Flags 中去掉 -ObjC 以及 -all_load 参数(这个参数会强制所有的静态链接库都加载其中的 category);
  • 使用 -force_load 来逐一加载各个静态库,如下图:
image.png

如果编译项目时提示找不到 xx.a,可以手动拖入 xx.a 文件到 Other Linker Flags 弹窗中,如下图:

image.png

最后项目编译成功,运行也没问题。

注意:每添加一个 xx.a 文件,就要在上一行添加 -force_load,如上图。

参考博客:https://www.cnblogs.com/ivanway/p/3956185.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容