将应用程序放入 AdMob 后出现“找不到库”错误

Posted

技术标签:

【中文标题】将应用程序放入 AdMob 后出现“找不到库”错误【英文标题】:Error "library not found for" after putting application in AdMob 【发布时间】:2014-07-25 20:17:49 【问题描述】:

我将应用程序放入 AdMob 后出现错误。该应用程序一直运行到今天。错误如下:

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

我该如何解决这个问题?谢谢。

【问题讨论】:

试试这个:***.com/questions/1471968/… ***.com/questions/33140790/… 有时:拔下设备并首先构建项目。它将生成库,然后您将能够在设备中运行。 【参考方案1】:

我遇到了类似的“找不到库”问题。然而这是因为我不小心使用了.xcodeproj 文件而不是.xcworkspace 文件。

【讨论】:

有人能解释一下 .xcodeproj 和 .xcworkspace 的用途吗? 这样的事情让我爱上了 javascript 生态系统 xcworkspace 是你使用 Cocoapods 的时候。不是 Xcode 的问题,而是用户的问题。 ffs 今天下午早些时候我浪费了 5 个小时,因为我没有意识到差异。 -_- .xcworkspace 是当您的解决方案中有多个“项目”时。例如,您可以拥有在许多项目中使用的外部库(cocoapods)或您自己的库。【参考方案2】:

有时您只需删除库的引用并再次添加引用。

除了从头开始重新添加 Google 移动广告 SDK 和其他库之外,我建议您检查库搜索路径。在某些情况下,当您复制或复制目标时,Xcode 决定它需要使用 '\' 转义任何双引号 "。确保删除所有 \'s - 它应该看起来像这样 -

我能够通过在路径前添加多个“\”来复制错误。

【讨论】:

好一个,在 pod install 之后,其中一个库没有在那里列出。我不知道为什么,但添加该库路径使其工作。 这解决了我的问题“找不到 -lART 的库”,这真的令人难以置信!谢谢! 也考虑“标题搜索路径”。 @raurora 您如何访问库搜索路径? @MassimoFrittelli 项目 > 构建设置选项卡 > 搜索路径。您也可以在搜索选项中输入。【参考方案3】:

选择您的目标,转到"Link Binary With Libraries" 中的"Build Phases" 删除该库的".a" 文件。 清理并构建。

【讨论】:

是的,奇怪的是 Xcode 并没有通过将其标记为红色来标记它丢失 真的很好!!我的问题是当我将用户框架添加到旧项目时。删除 coreplot.a 并且工作正常!!!!【参考方案4】:

如果与 Cocoapods 相关的错误如下:

library not found for -lPod-...

您需要检查Other Linker Flags并将其从那里删除。

额外信息:如果您有一个使用 cocoapods 的旧项目。最近您需要将 use_frameworks! 添加到您的 podfile 中。 cocoapods 不会将库添加到您的其他链接器标志 不再导致其继承。因此,您可能需要删除那些 手动从之前添加的其他链接器标志 使用 use_frameworks!

【讨论】:

我这里有很多标记,我应该删除所有标记还是只删除 Pod 的标记? 如果这些标志导致问题。如果您仍想使用它,您应该删除它们或保留它们并添加库。 我猜当您尝试手动删除可可豆荚添加的库时会发生这种情况。正确的方法是从您的 podfile 中删除该库。然后你再次运行 pod install 谢谢!!这对我来说是一个线索:)。就我而言,重复的目标将每个 -l"framework" 分成两行 "-l" 和 "framework" !! @IanSteffy 把它结合起来【参考方案5】:

对于我的情况 Xcode 7,也适用于 Xcode 9.1/9.2

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

Build Active architecture Only 设置为Yes

【讨论】:

当我们需要为 App Store 创建生产版本时怎么办?我的意思是,对于 Production Build,它应该是 NO。 同意对生产来说应该是 NO 这对生产构建安装没有影响吗? 在 XCode 9.2 和 ios 11 上集成 Pinterest SDK 时为我工作。【参考方案6】:

如果错误如下

ld: 找不到 -lpods 的库

我发现在项目的框架组中以某种方式创建了一个红色的文件“libPods.a”(如丢失的文件)。我只是简单地删除了该文件,一切都很好。

编辑:另一种解决方案

我已经在类似问题中回答的另一个解决方案是this link

【讨论】:

【参考方案7】:

转到 Build Phases -> Link Binary With Libraries 并删除显示错误的库,因为该库在项目文件夹中不可用

【讨论】:

这解决了我的特殊问题。我有两个类似的命名库,一个名为libPods-Foo BarTests.a,另一个名为libPods-FooBarTests.a【参考方案8】:

答案迟到了,但这是我尝试过的事情的清单。因此,如果有人想尝试解决问题,它将在一个地方。

    有效架构 = armv7 armv7s 仅构建活动架构 = 否 Target -> Build Settings ->Other Linker Flags = $(inherited) 目标 -> 构建设置 -> 库搜索路径 = $(inherited) 产品清洁 终端中的 Pod 更新

【讨论】:

【参考方案9】:

对于我来说,出现这个问题是因为我为 IOS 安装了材料库。 解决这个问题

1:转到目标应用的构建设置

2:搜索其他链接器标志

3:打开其他链接器标志并检查错误中提到的库。

4:删除该标志。

5:清理和构建。

我希望这能解决您的问题。

【讨论】:

【参考方案10】:

找不到库

Static Library 的编译时错误是由Static Linker 引起的

ld: library not found for -l<Library_name>

1.当你没有包含Library Search Paths(LIBRARY_SEARCH_PATHS)的库路径时,你会得到错误Library not found for

ld 表示Static Linker 找不到库的位置。作为开发人员,您应该帮助链接器并指出Library Search Paths

Build Settings -> Search Paths -> Library Search Paths 

2.如果你第一次打开一个支持 Cocoapods 的新项目 (.xcodeproj) 也会出现这个错误,运行 pod update。要修复它,只需关闭此项目并打开创建的工作区 (.xcworkspace )

[Vocabulary]

【讨论】:

【参考方案11】:

就我而言,存在命名问题。我的库被称为ios-admob-mm-adapter.a,但 Xcode 预计名称应该以前缀 lib 开头。我刚刚将我的库重命名为 libios-admob-mm-adapter.a 并解决了这个问题。

我使用 Cocoapods,它在我的目标的构建设置中使用 Other linker flags 选项链接库。标志看起来像-l"ios-admob-mm-adapter"

希望对别人有帮助

【讨论】:

【参考方案12】:

简单地说,项目目标中缺少GoogleAdMobAds.a。 对我来说是libAdIdAccessLibrary.a 请查看附件截图

【讨论】:

【参考方案13】:

ld: library not found for -LIBRARY_NAME 的情况下发生是因为库文件不存在。

检查应用程序目标的“构建阶段”上的库路径 库搜索路径选项卡。

库文件路径必须与真实路径一致,例如,如果您的文件位于项目的根目录中,则必须将路径设置为$(PROJECT_DIR)

【讨论】:

【参考方案14】:
    清理的构建文件夹 重新启动 XCode

走了……

【讨论】:

【参考方案15】:

我知道这有点老了,但我刚刚遇到了一个类似的问题,运行“pod update”为我解决了这个问题。我的库错误与 AFNetworking 相关...

如果您不在 pod 文件中使用显式版本,请小心进行 pod 更新。

【讨论】:

【参考方案16】:

这个错误很奇怪。

我在使用 -ldAfnetworking 时遇到了这个错误,我只将我的项目复制到其他路径并正常工作。

【讨论】:

【参考方案17】:

我尝试将构建配置 Release 重命名为 Production,但显然 cocoa pods 不喜欢它。我再次将其重命名为 Release,一切正常。

【讨论】:

您也可以在 podfile 中重命名目标。【参考方案18】:

@raurora 的回答为我指明了正确的方向。我在我的“watchkitapp Extension/lib”路径中包含了库。在这种情况下,需要使用“\”对库搜索路径进行转义,但链接器似乎不理解这一点。为了修复/解决该问题,我将我的 lib 路径上移了一级,因此它不再位于名称中包含空格的目录中。

【讨论】:

【参考方案19】:

我刚刚更新了 pod 文件“pod update”,它开始正常为我工作。

【讨论】:

【参考方案20】:

在我的项目中运行“pod update”解决了我的问题,即“找不到 -lSTPopup 的库”错误。

评论特雷弗·潘霍斯特的回答:

“如果您不在 pod 文件中使用显式版本,请小心进行 pod 更新。”

【讨论】:

【参考方案21】:

简单的解决方案。以下是我解决问题的方法:

    进入目录platforms/ios 然后,执行命令pod install

就是这样。这应该会安装缺少的库。

【讨论】:

【参考方案22】:

我在未找到的库中遇到了类似的错误。最终这就是我能够解决它的方法

    在开始使用 Xcode Archive 之前,使用 Flutter 构建 iOS 将 IOS 部署目标更改为更高的目标 iOS 11.2。早些时候我有类似 8.0 的东西,它给出了上述所有错误。 确保 Xcode 中的 IOS 部署目标在 Project、Target 和 Pod 中相同

【讨论】:

【参考方案23】:

我也面临同样的问题,花了超过 24 小时来解决这个问题,我尝试了上述解决方案中的所有方法,但最终对我有用的是

    构建设置 -> 选择目标 基础知识 用户自定义 将 VALID_ARCHS 更改为 arm64

【讨论】:

以上是关于将应用程序放入 AdMob 后出现“找不到库”错误的主要内容,如果未能解决你的问题,请参考以下文章

更新到 Android 11 后 Admob 中出现严格的安全 Cookie 策略错误

将异步函数放入 useEffect 后出现错误

ldd 说编译成功完成后找不到库

实施AdMob后出现问题

Xcode 13:如何为“找不到库”添加库搜索路径

原因:输入无效。 ld:-lclang_rt.ios找不到库