我正在研究一个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”解决了这个问题,编译。但是,在Unity项目中添加动态框架时,会触发方法“UnitySendMessage”时崩溃。
dyld`dyld_fatal_error:
*创建静态框架时,该方法不会崩溃并正常工作。仍然不明白这种情况下动态框架的区别。
为遵循的方法在我的.h文件中声明:
#ifdef __cplusplus
extern "C" {
void UnitySendMessage(const char* obj, const char* method, const char* msg);
}
#endif
你解决了这个问题吗?我在这里有类似的问题。静态作品,动态引发链接错误... – liefersfl
@martijn我知道这是2年前问的,但是你解决了这个问题吗? –
你解决了这个问题吗,我过去3天面对这个,无法解决。 – abhi