【问题标题】:LibcOverlayShims.h compile failureLibcOverlayShims.h 编译失败
【发布时间】:2021-01-29 06:16:45
【问题描述】:

尝试编译我的应用时,SDK 本身出现错误:

<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "LibcOverlayShims.h"
        ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/swift/shims/LibcOverlayShims.h:66:10: error: use of undeclared identifier 'errno'
  return errno;
         ^
<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "LibcOverlayShims.h"
        ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/swift/shims/LibcOverlayShims.h:70:3: error: use of undeclared identifier 'errno'
  errno = value;
  ^
<unknown>:0: error: could not build Objective-C module 'SwiftOverlayShims'

似乎没有包含 errno.h,但我可以看到它位于该文件的第 33 行。我尝试了通常的派生数据删除、产品清理、重新安装 Xcode、重新启动。我已经尝试从应用程序中剥离部分内容以尝试查看导致它的原因,但还没有走得太远。

编辑:应用的存档似乎会触发它。在调试模式下运行非常好,然后我存档并破坏它。尝试再次从调试运行失败。对项目文件进行随机更改,然后运行git reset --hard 然后允许调试再次工作,直到我尝试存档。发布设置似乎有问题,然后会延续到后续的调试版本(即使是干净的)

【问题讨论】:

  • 不是#define DEBUG 骗你的吗?
  • 我的评论越过了您的编辑...可能不是 #define 鉴于您的编辑...也许您的方案需要编辑...
  • 另外,请记住有一个名为 errno 的全局 C 变量,它可能只在您的 DEBUG 版本中使用,所以在这个困难的情况下,#define DEBUG 仍然是一个嫌疑犯......跨度>
  • @skaak 非常有趣,我刚刚编辑了我的方案并将存档构建配置从发布更改为调试,并且它正确构建。我想我不明白为什么它需要进行随机更改并执行 git reset 以将其恢复到编译位置。
  • 我还在整个项目中搜索了#define DEBUG,但一无所获,所以我认为这不是问题,但我不知道

标签: objective-c swift xcode macos


【解决方案1】:

几个月后我终于弄明白了。我们的软件附带此文件夹/usr/local/opt/company_name,其中包含一些库、软件包等。我们的 Swift 代码与其中的一些链接,因此最简单的方法是将 Xcode 设置为递归地在该目录中搜索头文件和库,而不是单独搜索指定它们。

由于一些相当痛苦的原因,python 的副本实际上是在该文件夹中提供的。事实证明,那个 python 目录中的一些头文件让 Xcode 非常不开心,并触发了编译器错误。我手动指定了我们需要链接的库并解决了问题。

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 2021-06-14
    • 2018-11-06
    • 1970-01-01
    • 2013-02-01
    • 2016-08-16
    • 2015-09-07
    • 2019-08-06
    • 2013-07-03
    相关资源
    最近更新 更多