在Swift模块中使用C库时发生链接器体系结构错误
我有一个具有以下结构的xcode工作区:在Swift模块中使用C库时发生链接器体系结构错误,c,swift,compiler-errors,frameworks,linker,C,Swift,Compiler Errors,Frameworks,Linker,我有一个具有以下结构的xcode工作区: 编译到框架中的C库iGLPK(动态或静态,错误仍然存在) 一个动态框架SwiftyGLPK,它将iGLPK作为一个链接框架,并提供一个使用C库的Swift包装器 一个xcode项目冻结,它将SwiftyGLPK作为一个链接框架 使用SwiftyGLPK库的代码位于冻结的项目中的一个单独的框架目标Model\u GLPK。这个框架编译得很好 当我在调用Model\u GLPK的主freezed/ViewController中编写代码时,问题就出现了,并
- 编译到框架中的C库
(动态或静态,错误仍然存在)iGLPK
- 一个动态框架
,它将SwiftyGLPK
作为一个链接框架,并提供一个使用C库的Swift包装器iGLPK
- 一个xcode项目
,它将冻结
作为一个链接框架SwiftyGLPK
- 使用SwiftyGLPK库的代码位于
冻结的
项目中的一个单独的框架目标
。这个框架编译得很好Model\u GLPK
Model\u GLPK
的主freezed/ViewController
中编写代码时,问题就出现了,并因此向下到下面的C库-它不会编译并产生此链接器错误:
Undefined symbols for architecture arm64:
"SwiftyGLPK.SolveGoal.Minimise (SwiftyGLPK.SolveGoal.Type) -> SwiftyGLPK.SolveGoal", referenced from:
Frozen.ViewController.viewDidLoad (Frozen.ViewController)() -> () in ViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我在模拟器和设备上得到了相同的结果,只是架构没有改变
我还尝试从Model\u GLPK
框架中提取文件,并将它们直接放入freezed
目标中。现在一切都编译得很好,不再有链接错误,但我在运行时遇到了一个硬崩溃
dyld`dyld_fatal_error:
-> 0x1200c1088 <+0>: brk #0x3
dyld`dyld\u致命错误:
->0x1200c1088:brk#0x3
在本说明之后:
dyldbootstrap::start(macho_头常量*,int,char常量**,long,macho_头常量*,unsigned long*)
有人能解释发生了什么事吗 我找到了解决办法,但没有找到解释 我又一步一步地构建了工作区,首先让C库直接在主项目中编译,然后将其解压缩到框架中,然后将其Swift包装器解压缩到自己的框架中,然后创建一个链接到包装器的内部模块 现在一切都正常了,但我仍然不知道为什么或者和以前有什么不同。整个东西感觉很脆弱。¯_(ツ)_/“” 这篇关于的文章很有帮助,同样也很有帮助。尝试使用本指南