我一直在开发的应用程序使用了一个外部库 pdlib,它有自己的外部文件(.c 文件),我通过桥接头导入#import "Uzi.c"
并通过 Uzi.c 的 setup 函数Uzi_setup()
在我的主 Swift 文件中调用ViewController
班级。直到几天前更新到新的公共 Xcode 8 之后,我才对此没有任何问题(我在夏季对 Xcode 8 Beta 1 没有任何问题)。
这是我得到的 7 个错误,列在单个“Mach-O 链接器错误”保护伞下:
Undefined symbols for architecture x86_64:
"_Uzi_bang", referenced from:
_Uzi_setup in ViewController.o
"_Uzi_class", referenced from:
_Uzi_setup in ViewController.o
"_Uzi_float", referenced from:
_Uzi_setup in ViewController.o
"_Uzi_new", referenced from:
_Uzi_setup in ViewController.o
"_Uzi_pause", referenced from:
_Uzi_setup in ViewController.o
"_Uzi_resume", referenced from:
_Uzi_setup in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
那些未定义的符号是 Uzi.c 中的 6 个函数和一个类声明。这是整个 c 文件的链接:https ://github.com/electrickery/pd-miXedSon/blob/master/hammer/Uzi.c
我已经尝试了我在网上找到的用于处理类似问题的所有解决方案,但还没有解决方案......我尝试将“架构”和“有效架构”设置更改为仅 armv7 和 armv7s(无 arm64)并更改了“构建仅活动架构”改为“否”。这些步骤似乎在类似情况下帮助了其他人,但它们对我不起作用(并且带走 arm64 会导致出现额外的错误)。
XCode 8 是相当新的(公共版本于 9 月 13 日发布),因此几乎没有其他关于此升级的问题会导致类似问题。
任何帮助将不胜感激!