小编mar*_*ijn的帖子

动态框架中未定义的体系结构符号

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

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

Undefined symbols for architecture arm64:
   "_UnitySendMessage", referenced from:
 ....
ld: symbol(s) not found for architecture arm64
Run Code Online (Sandbox Code Playgroud)

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

void UnitySendMessage(const char* obj, const char* method, const char* msg);
Run Code Online (Sandbox Code Playgroud)

当作为静态库进行编译时,它可以编译并正常工作,但是在嵌入式第三方框架上出现了其他崩溃。因为我无法控制这些框架,所以我更喜欢创建一个动态框架。

我已经根据我可以找到的所有其他帖子尝试了许多编译器设置,但是由于嵌入式框架的原因,我需要支持多种体系结构。没有一个设置对我有用。

我也尝试创建另一个静态框架,并将其嵌入到我的“父”动态框架中。我用lipo检查了一下,似乎添加了体系结构,但是我仍然遇到相同的未定义符号错误。

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

更新

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

dyld`dyld_fatal_error:
Run Code Online (Sandbox Code Playgroud)

*创建静态框架时,该方法不会崩溃并且可以正常工作。仍然不了解在这种情况下使用动态框架有什么区别。

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

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

frameworks compiler-errors dynamic objective-c ios

6
推荐指数
1
解决办法
1424
查看次数

如何在伞形框架中链接子框架?

我正在尝试创建一个包含各种第三者子框架的静态伞式框架。因此,我遵循了以下教程:

如何在iOS SDK中创建伞式框架?

不幸的是,当将静态伞框架添加到另一个项目中时,我从子框架中收到各种“未定义符号”错误。

当我像下面的图片一样在“链接库的二进制文件”中再次链接子框架时,它确实起作用。但是,如何防止需要这样做呢?我只希望外部开发人员将我的Umbrella框架添加到他的项目中。

将二进制文件与库图像链接

frameworks ios

5
推荐指数
1
解决办法
912
查看次数

标签 统计

frameworks ×2

ios ×2

compiler-errors ×1

dynamic ×1

objective-c ×1