2015-11-10 87 views
3

我正在研究一个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 
+0

你解决了这个问题吗?我在这里有类似的问题。静态作品,动态引发链接错误... – liefersfl

+0

@martijn我知道这是2年前问的,但是你解决了这个问题吗? –

+0

你解决了这个问题吗,我过去3天面对这个,无法解决。 – abhi

回答

0

确保在生成设置框架目标建立积极的体系结构只= NO

如果您正在使用cocoapod用于管理您的依赖关系 检查pod目标并将其放入仅生成活动架构=否

+0

也尝试删除.m和.h,然后再次复制它:确保选择“将项目复制到目标组的文件夹(如果需要)” 检查构建标题中的.h和编译源中的.m 双点击Header Search Paths项目,弹出窗口就会出现。点击+按钮,并输入以下内容:$ SOURCE_ROOT/include –

+0

首先感谢您的回答!不幸的是所有的建议都没有奏效任何其他想法可能是什么? – martijn

相关问题