Xcode stdint.h #error只有在使用MSVC进行编译时才应包含此文件

时间:2017-09-13 23:36:12

标签: ios xcode react-native cocoapods

我在Xcode中有一个CocoaPods React Native项目,过去几个月里99%的时间都在工作。 (1%是像这样的随机内容,链接器错误等......看似随机而来)。

我今天安装了一个新的Pod及其相应的npm依赖项,过去当我添加了pod时,我有时会遇到问题,直到我尝试pod deintegratepod installreact-native link和例如,清理Xcode项目。但这一次似乎没有什么能解决它。

每次构建时,无论是模拟器还是物理设备,我都会从stdint.h

中收到以下错误

This file should only be included when compiling with MSVC.

很容易找到错误的来源,它在stdint.h中明确是用户定义的:

screenshot of stdint.h

但我不能为我的生活弄清楚为什么它会被触发。它在评论中说MSVC包含在那里。据我所知,基于C的Xcode编译器应该提供MSVC版本以满足条件。此外,在过去几个小时的故障排除/实验过程中,调用错误的罪魁祸首已多次更改。现在它来自RCTFBSDK,但早些时候来自RNFirebase

检查完整的错误树,我可以找到请求`stdint.h的文件,但鉴于它是一个基本文件,我怀疑它是否相关 - 但是在这里:

Xcode Error tree

根据我到目前为止的调查,我倾向于认为这是Xcode导致问题的配置错误,特别是与CocoaPods有关的事情(但坦率地说我是' m不确定)

我所知道的是它在没有Pod / npm依赖项的情况下工作(顺便说一下,它与当前抛出错误的Facebook SDK完全无关),当我将它添加到package.json和{{1}时},标准Podfile npm install pod install会发生这种情况。

以下是我尝试的内容:

  • react-native link npm install npm update npm link react-native link pod deintegrate
  • 的每一个组合
  • 删除了xcworkspace并使用pod install
  • 重新生成了它
  • 删除了用户定义的错误条件(构建成功但在启动后很快崩溃并出现此错误:pod install
  • 完全重新安装Xcode
  • 恢复到之前的git提交(从我添加新pod之前),它运行良好
  • 握住拳头,大喊(不得已)

此外,我对[fatal][tid:com.facebook.react.ShadowQueue] Exception '*** -[__NSArrayM insertObject:atIndex:]: index 1 beyond bounds for empty array' was thrown while invoking manageChildren on target UIManager with params (...Podfile完整性有100%的信心。我从一个完善的存储库中复制了安装过程。

我非常惊讶地发现关于此的绝对零信息。我发现最接近的东西与C ++有关(可以理解)。

有人对此有任何理论吗?谢谢。请让我知道我没有提供的任何其他具体信息。

1 个答案:

答案 0 :(得分:4)

引用RNFirebase的共同作者:

  

目前,在可可豆荚上放置leveldb是件令人烦恼的事情

这是一个临时解决方法:

cd ios && rm -rf Pods/leveldb-library/port/win

您可能还需要按如下方式更新Podfile:

pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTWebSocket', # needed for debugging
    # Add any other subspecs you want to use in your project
]

这是为了避免在您运行0.48.x时出现进一步的错误。

您可能希望在Podfile的末尾添加临时解决方法,因此您无需担心:

# Temporary workaround for https://github.com/invertase/react-native-firebase/issues/395
post_install do
  `rm -rf Pods/leveldb-library/port/win`
end

来源: