在Swift模块中使用C库时发生链接器体系结构错误

在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中编写代码时,问题就出现了,并

我有一个具有以下结构的xcode工作区:

  • 编译到框架中的C库
    iGLPK
    (动态或静态,错误仍然存在)

  • 一个动态框架
    SwiftyGLPK
    ,它将
    iGLPK
    作为一个链接框架,并提供一个使用C库的Swift包装器

  • 一个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包装器解压缩到自己的框架中,然后创建一个链接到包装器的内部模块

现在一切都正常了,但我仍然不知道为什么或者和以前有什么不同。整个东西感觉很脆弱。¯_(ツ)_/“”

这篇关于的文章很有帮助,同样也很有帮助。

尝试使用本指南