2015-10-06 64 views
0

当我在Xcode中运行此代码时,生成失败。我从The Big Nerd Ranch Guide to Obj-C那里得到了大块。我不得不稍微修改它(添加库stdlib.h和readline/readline.h)它表示构建失败,但没有我能看到的错误。这个问题可能看起来像是重复的,而且在某种程度上,但即使在看到他们的解决方案并为自己尝试之后,我仍然会遇到错误。readline无法正常工作

#include <stdio.h> 
#include <readline/readline.h> 
#include <stdlib.h> 

int main(int argc, const char * argv[]) 
{ 
    printf("Who is cool? "); 
    const char *name = readline(NULL); 
    printf("%s is cool!\n\n", name); 
    return 0; 
} 

Undefined symbols for architecture x86_64: "_readline", referenced from: _main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

+0

一方面,当你运行它时,你会说“什么都没有发生”。但另一方面,你说“构建失败”。你能否澄清一下你是在询问编译时还是运行时问题? – kaylum

+0

哦,对不起!没有清楚地思考。当我点击运行时,它说构建失败。在此之前和之后,它说没有错误。 – Dingo

+2

当它说“构建失败”时,应该有一个错误日志。请发布所报告的确切错误。另外,你有libreadline链接?你说你有“添加库”。但是这些是在编译期间使用的头文件,但不是需要链接的实际库。我对Xcode一无所知,但有些地方你需要告诉它在libreadline中链接。在命令行上它将是'-lreadline'选项。 – kaylum

回答

1

类似的问题在this link提及。您必须在构建阶段将libreadline.dylib文件链接到您的项目。

+0

这是我为修复引用的链接之一,但它并未解决我的问题。不过感谢您的帮助! – Dingo

+0

您是否访问了构建阶段的链接二进制文件库部分并添加了libreadline.dylib和?错误与这个阶段有关,我不明白为什么它不应该在那之后工作。 – nikaltipar

+0

啊!我不知道该怎么做。我只是查了一下并添加了它。它现在工作正常,唯一的问题是,我的输入是翻倍(例如,我进入山姆,它类型为SSaamm)。无论如何,谢谢你的答案! – Dingo