链接器命令失败,退出代码为1(使用-v查看调用),Xcode 8,Swift 3

问题描述 投票:94回答:22

我无法摆脱这个错误!

我尝试了各种各样的事情,比如清除衍生数据(首选项 - >位置 - >单击灰色箭头在Finder中打开Derived Data文件夹 - >右键单击,移至垃圾箱),清理项目(CMD + Shift + K或产品) - >清理),更新carthage和依赖项,检查StackOverflow上的其他答案(主要是在Build Settings / Phases中调整),并从github等重新克隆应用程序。

同一项目适用于我的协作者计算机..

编辑:从目前最受欢迎的答案,我能够进一步调试...我仍然不知道如何修复。看起来我在项目中有两次东西?我看了,发现两次都找不到任何东西!

这是日志的图片:

ios objective-c xcode xcode8 carthage
22个回答
155
投票

我今天在xcode 8版本8.3.2中遇到了同样的问题

右键单击问题 - >在日志中显示

enter image description here

然后你就可以检查是什么导致了这个问题

enter image description here


2
投票

我有同样的问题。

原因是我在2个文件中声明了相同的全局变量。所以它显示相同的错误说2个重复的符号。

解决方案是删除这些变量。


2
投票

任何有Flurry框架问题的人。这就解决了我的问题。对我来说问题是我导入了以下文件但从未使用过它们。 “libFlurryTVOS_9.2.3”“libFlurryWatch_9.2.3”

所以我所要做的就是去项目目标设置并从“链接的框架和库”部分删除这两个文件,问题就解决了。


2
投票

我有同样的问题。如果你正在检查任何github项目,那么使用git lfs clone,而不是使用git clone,有时候,只使用git不能正确克隆一些大文件。此外,请确保您的bitcode已禁用。


1
投票

我只需要做import Foundation

我使用Kitura作为Swift服务器端并且一直忘记这一点!


1
投票

这是我的问题和解决方案:

我使用源代码树(版本控制器)从源代码中删除了两个文件。应用包含我删除的两个类的diff之后,Xcode没有自动添加它。所以我收到了链接器错误。

我通过右键单击组名并手动添加文件,然后选择“将文件添加到”。现在我的错误得到了解决。

如果有人遇到关于类文件的链接器错误,请尝试手动添加它。


1
投票

当我在自己的设备上构建和运行时没有遇到此问题。只有模拟器有这个问题。我只是重新启动计算机并运行它。有效。


1
投票

在我的情况下,错误的原因是两次链接的库。

我使用react-native,因此它使用react-native link自动链接并在xcode中手动链接。


1
投票

在我的情况下,我已经在我的Target中更改了Podfile名称所以它为我创建了相同的错误。

只需去project-> Build Phase->Link Binary with libraries点击FrameWorks删除旧的minus button(-)并清理并再次运行。这是我的工作。

enter image description here

删除不需要的.framework


1
投票

其他答案对我不起作用,所以在这里我分享我的解决方案,以防它可能帮助其他人:

我的问题是我正在为错误的平台配置我的XCode-Project的Podfile。将我的Podfile开头的“platform:ios”改为“platform:macos”,为我摆脱了错误。


1
投票

确保选中Find Implicit Dependencies复选框。

(产品 - >方案 - >编辑方案 - >构建 - >查找隐式依赖关系)


97
投票

也许你安装了一个pod文件,你仍在尝试使用.xcodeproj文件而不是.xcworkspace构建


1
投票

我用CocoaPods测试了Sparkle框架。

可悲的是,我把PodFile中的“pod'Sparkle','〜> 1.21'”放在了错误的地方。我把它放在测试下面(用于单元测试)。

一旦放入PodFile的正确位置,一切都很好。


-1
投票

在构建Ionic 1项目时,我遇到了同样的问题。

删除文件CDVLogger.h和CDVLogger.m后,我能够解决问题


-4
投票

好的,我今天遇到了同样的问题,当我遇到这个帖子时,我开始谷歌搜索它。当答案触动我时,我还没有读完问题:我用一个空构造函数声明了一个类

class MyClass{
    MyClass();

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

然后我想为什么不终止(不确定我在这里选择单词是否正确,但是谁在乎)我的班级的构造函数用花括号({})。所以我做了:

class MyClass{
    MyClass(){}

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

问题消除了,我的代码开始完美运行。

我知道,好的做法是调查问题并找到真正的原因,但这对我有用。


34
投票

唯一对我有用的是运行pod deintegratepod install


17
投票

你试过干净吗? cmd + shift + k


8
投票

好的......所以这就解决了我的问题......

在App委托文件中:

#import "AppDelegate.h"
#import "DarkSkyAPI.h"
//#import "Credentials.h"

我已经在项目的DarkSkyAPI.m文件中导入了Credentials.h。评论额外的导入使得错误消失了!

有些事情要提及,也许将来可以帮助任何人。 @ umairqureshi_6的回答确实帮助了我,但没有解决它。他导致了我能够挖掘信息的地方。我一直看到错误日志中显示的AppDelegate和DarkSkyAPI文件以及它从Credentials文件中提取的信息导致错误。我知道它必须在这3个文件中的一个,所以我立即检查了导入,因为我记得听说.h携带从.m文件中的所有导入。繁荣!


5
投票

我现在问题已经回答了。但如果这有助于某人节省一些时间:我有同样的错误。我检查了一切,发现了我身边一个非常小而愚蠢的错误。我在项目的视图控制器中导入了一个核心数据ManagedObject自定义文件。我不小心导入.m文件而不是.h文件导致架构中的重复符号错误(链接器命令失败),因为我的.m文件属性类导入核心数据类的.h文件,因此导致重复导入。

因此,在尝试多种解决方案之前,请检查是否已导入正确的文件。


5
投票

上面提到了很多解决方案。没有人为我工作(但请先尝试上面)。

选择Project - > Select Target - > Linked Framework and Libraries - > Add all pod libraries。 (如果它们存在于嵌入式二进制文件中,

现在从xcode的左侧文件浏览器中的Framework Folder中删除它们。

这解决了我的问题。


4
投票

选择项目 - > Build Phase-> Link Binary with libraries并添加所有pod库。


2
投票

使用Carthage进行依赖时,我遇到了同样的问题。

只需转到选择项目 - >构建设置 - >搜索启用Bitcode - >如果选择为是,请选择否。

这为我解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.