Linker Command failed with exit code 1 (use -v to see invocation), Xcode 8, Swift 3

I can't get rid of this error!

I have tried all sorts of things like clearing Derived Data(Preferences->Locations->click gray arrow to open Derived Data folder in Finder->right-click, move to trash), cleaning the project(CMD+Shift+K or Product->Clean), updating carthage and dependencies, checked other answers on StackOverflow (mostly adjustments in Build Settings/Phases), and recloned the app from github, etc.

The same project works on my collaborators computers..

EDIT: From the current top-rated answer, I was able to debug a little further...I am still not sure how to fix though. It looks like I have something in the project twice? I looked and can't find anything showing up twice!

Here's a picture of the log:

297193 次浏览

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

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

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

enter image description here

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

enter image description here

好吧,这就是解决我问题的方法。

应用程序委托文件:

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

I had imported Credentials.h already in the DarkSkyAPI.m file in my project. Commenting out the extra import made the error go away!

Some things to mention and maybe help anyone in the future. @umairqureshi_6's answer did help me along the process, but did not solve it. He led to where I was able to dig out the info. I kept seeing AppDelegate and DarkSkyAPI files showing up in the error log and the information it was pulling from Credentials file was causing the error. I knew it had to be in one of these 3 files, so I immediately checked imports, because I remembered hearing that the .h carries all the imports from its .m file. Boom!

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

也许您已经安装了 分离舱文件,但是仍然试图从 .xcodeproj文件而不是 .xcworkspace构建

I k now the question has already been answered. But if this helps somebody save some time : 我也犯了同样的错误。我检查了所有东西,从我这边发现了一个很小很愚蠢的错误。我在项目的视图控制器中导入了一个核心数据 ManagedObject 自定义文件。导致体系结构错误(链接器命令失败)的重复符号的 我不小心导入了.m 文件而不是.h 文件文件。属性类的 m 文件导入。H 文件的核心数据类,从而导致重复导入。

So just check if u have imported the right files before you try multiple solutions.!

我必须做 import Foundation

I was using Kitura for Swift server side and kept forgetting this!

Here is my problem and solution:

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

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

如果有人面临关于类文件的链接器错误,那么尝试手动添加它。

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

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

现在从 xcode 的左侧文件资源管理器的 FrameworkFolder 中删除这些文件。

这解决了我的问题。

选择 project-> Build Stage-> Link Binary with library 并添加所有 pod library。

我有同样的问题使用迦太基为依赖。

Just go to Select Project -> Build Settings -> Search for Enable Bitcode -> If it is selected to Yes, select No.

That solved this problem for me.

我也有同样的问题。

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

The solution was to remove those variables.

好吧,我今天也遇到了同样的问题,当我看到这个帖子的时候,我就开始在谷歌上搜索它。我还没有读完这个问题,突然想到了答案: 我用一个空构造函数声明了一个类

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;
}
};

问题解决后,我的代码开始完美运行。

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

我在自己的设备上构建和运行时没有这个问题。只有模拟器有这个问题。我只是简单地重新启动我的电脑并运行它。成功了。

对于任何一个有这个问题的 Flurry 框架。这是什么修复我的问题。 对我来说,问题是我导入了以下文件,但从未使用过它们。 “ libFlurryTVOS _ 9.2.3” “ libFlurryWatch _ 9.2.3”

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

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

我使用 react-native,所以它是自动链接使用 react-native link和手动在 xcode。

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

解决方案

只要去除旧的 FrameWorks点击 minus button(-)和清洁运行再次。这是我的工作。

enter image description here

删除不需要的 .framework

The other answers didn't work for me so here I share my solution in case it might help somebody else:

我的问题是,我正在为错误的平台配置 XCode-Project 的 Podfile。将 Podfile 开头的“ Platform: ios”更改为“ Platform: macos”对我来说可以消除这个错误。

确保选中了 Find Implicit Dependencies复选框。

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

我在用 CocoaPods 测试 Sparkle 框架。

遗憾的是,我把 pod 'Sparkle', '~> 1.21'放在了 PodFile 的错误位置,我把它放在了 Test (用于单元测试)的下面。

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

我也有同样的问题。如果您正在签出任何 github 项目,那么不要使用 git 克隆,而是使用 git lfs 克隆,因为有时候,有些大文件仅使用 git 是无法正确克隆的。另外,请确保禁用了您的比特码。

对我来说,gem 锁文件指定的 cocoapods 版本比我安装的旧版本要旧。我不得不重新分支并运行 bundle exec pod install而不是 pod install

对于我们大多数人来说,这个问题似乎是不同的,而且错误消息提供了不错的信息。在我的示例中,部署目标被 export MACOSX_DEPLOYMENT_TARGET=10.13行设置为 10.13,但是我正在运行 10.14。因此,我必须将我的部署目标切换到通用 > 部署信息中的 10.14,以便 IT 库相关的符号再次可用。

cd /Users/foo/src/scrobble/macos/itunes-scrobble
export MACOSX_DEPLOYMENT_TARGET=10.13


... SNIP ...


Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_ITLibMediaItem", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_ITLibPlaylist", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_ITLibrary", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

在我的案例中,我从同一个项目中生产多种产品。对于其中一个产品,main.m文件从同一项目下的另一个文件夹导入了一个头文件。但是该文件不包含在“构建阶段”下的“符合的来源”中。这导致了连接器错误。

在仔细比较了可以成功构建的产品的“构建阶段”设置之后,我意识到头文件的 .m文件需要包含在“已编译源代码”列表中。我的问题在添加了那个文件之后就解决了。为了清楚起见,附上一张图片。必须添加突出显示的文件。

enter image description here

这个问题的原因之一可能是“仅构建活动体系结构”。您需要设置为 true。

Pod 构建阶段的 IOS 版本(在 xcode 中)和 pod 文件中的 IOS 版本应该是相同的(使用9.0进行尝试)