【问题标题】:Xcode - library not found for -lBVLinearGradientXcode - 找不到 -lBVLinearGradient 的库
【发布时间】:2021-11-02 22:41:54
【问题描述】:

我已经迁移到 Macbook Pro M1,我的 Xcode 版本是 12.5.1

运行我的应用程序时,出现以下错误:

ld: library not found for -lBVLinearGradient
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我也在使用react-native-linear-gradient(2.5.6 版)库,与此错误有关。

【问题讨论】:

  • 你能发布 react native 错误堆栈吗?
  • @MichaelBahl 我只在 Xcode 上收到此错误,因为我只从 Xcode 运行应用程序。或者我希望我正确理解了你的问题
  • 使用react-native run ios运行应用程序会发生什么
  • @MichaelBahl 我收到此错误 - 打印:条目,“:CFBundleIdentifier”,不存在
  • 专业提示:当显示基于文本的错误时,请将它们显示为文本,而不是图像。这使得 Stack Overflow 可以更轻松地与搜索引擎爬虫、读者的搜索引擎和读者的屏幕阅读器一起工作。

标签: ios xcode react-native clang


【解决方案1】:

我可以通过添加以下内容来修改我的 Podfile 来解决此问题:

post_install do |installer|
  ## Fix for XCode 12.5
  find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm",
 "_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules")
 find_and_replace("../node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm",
 "RCTBridgeModuleNameForClass(module))", "RCTBridgeModuleNameForClass(Class(module)))")
end

def find_and_replace(dir, findstr, replacestr)
  Dir[dir].each do |name|
      text = File.read(name)
      replace = text.gsub(findstr,replacestr)
      if text != replace
          puts "Fix: " + name
          File.open(name, "w") { |file| file.puts replace }
          STDOUT.flush
      end
  end
  Dir[dir + '*/'].each(&method(:find_and_replace))
end

【讨论】:

    【解决方案2】:

    让我为 XCode 13.1 更新如下:

    post_install do |installer|
          # Fix after updating to Xcode 13.1
          find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm",
         "_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules")
         find_and_replace("../node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm",
         "RCTBridgeModuleNameForClass(strongModule))", "RCTBridgeModuleNameForClass(Class(strongModule)))")
        end
        
        def find_and_replace(dir, findstr, replacestr)
         Dir[dir].each do |name|
             text = File.read(name)
             replace = text.gsub(findstr,replacestr)
             if text != replace
                 puts "Fix: " + name
                 File.open(name, "w") { |file| file.puts replace }
                 STDOUT.flush
             end
         end
         Dir[dir + '*/'].each(&method(:find_and_replace))
        end
    

    【讨论】:

      猜你喜欢
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 2017-11-30
      • 2014-06-25
      • 2020-11-25
      • 1970-01-01
      相关资源
      最近更新 更多