未定义的符号体系结构..在dynamic框架中

我正在研究一个iOS框架,该框架包含多个第三方框架,并使用UnitySendMessage C方法与Unity进行通信。

我想创build一个dynamic框架(支持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); 

当编译为一个静态库时,它编译和工作正常,但我得到其他embedded式第三方框架崩溃。 由于我无法控制这些框架,我更愿意创build一个dynamic框架。

我已经尝试了许多编译器设置基于我可以find的所有其他职位,但由于我需要支持多种体系结构的embedded式框架。 没有一个设置为我工作。

另外我试图创build另一个静态框架,并将其embedded到我的“父”dynamic框架。 我检查这与lipo和架构似乎被添加,但我仍然得到相同的未定义符号错误。

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

UPDATE

添加标志“-undefined dynamic_lookup”解决了编译问题。 但是,在Unity项目中添加dynamic框架时,触发“UnitySendMessage”方法时会崩溃。

 dyld`dyld_fatal_error: 

*创build静态框架时,该方法不会崩溃并正常工作。 仍然不明白在这种情况下与dynamic框架有什么不同。

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

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

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

如果你正在使用cocoapod来pipe理你的依赖关系,请检查pod目标,然后把Build活动体系结构设为= NO