将应用程序放入 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 后出现“找不到库”错误的主要内容,如果未能解决你的问题,请参考以下文章