ios – 用于体系结构的未定义符号..在动态框架中

前端之家收集整理的这篇文章主要介绍了ios – 用于体系结构的未定义符号..在动态框架中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个iOS框架,它拥有几个第三方框架,并使用UnitySendMessage C方法与Unity通信.

我想创建一个动态框架(支持iOS8),但我偶然发现以下编译错误

Undefined symbols for architecture arm64:
   "_UnitySendMessage",referenced from:
 ....
ld: symbol(s) not found for architecture arm64

这个方法在我的.m类中调用,并在我的.h文件中声明如下所示:

void UnitySendMessage(const char* obj,const char* method,const char* msg);

当编译为静态库时,它编译并正常工作,但我在嵌入式第三方框架上遇到其他崩溃.由于我无法控制这些框架,我更喜欢创建一个动态框架.

我已经尝试了很多基于我​​能找到的其他帖子的编译器设置但是由于嵌入式框架我需要支持多种架构.这些设置都不适合我.

此外,我试图创建另一个静态框架并将其嵌入到我的“父”动态框架中.我用lipo检查这个,似乎添加了架构,但我仍然得到相同的未定义符号错误.

我已经在这工作了2天,所以我真的希望有人能指出我正确的方向

UPDATE

添加标志“-undefined dynamic_lookup”解决了编译问题.但是,当在统一项目中添加动态框架时,它会在触发方法“UnitySendMessage”时崩溃.

dyld`dyld_fatal_error:

*在创建静态框架时,该方法不会崩溃并且工作正常.仍然不明白这种情况与动态框架有什么区别.

方法在我的.h文件中声明如下:

#ifdef __cplusplus
extern "C" {
    void UnitySendMessage(const char* obj,const char* msg);
}
#endif

解决方法

确保构建设置中的框架目标仅构建活动体系结构=否

如果您使用cocoapod来管理您的依赖项检查pod目标并仅将Build Active架构设为= NO

猜你在找的iOS相关文章