Hello我是编程世界的新手,我正尝试在线学习哈佛的CS50课程。在制作我的“Hello World”程序时,我下载了“cs50.h”来定义GetString
和string
(至少我认为是这样)。
文件.c:
#include "cs50.h"
#include <stdio.h>
int main(int argc, string argv[])
{
string name;
printf("Enter your name: ");
name = GetString();
printf("Hello, %s\n", name);
}
然而,每当我尝试make file
时,就会发生这种情况:
cc file.c -o file
Undefined symbols for architecture x86_64:
"_GetString", referenced from:
_main in file-JvqYUC.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [file] Error 1
以下是cs50.h文件的链接(如果有帮助):http://dkui3cmikz357.cloudfront.net/library50/c/cs50-library-c-3.0/cs50.h
我想知道为什么我得到这个错误,我如何可以修复它。请帮助。
6条答案
按热度按时间crcmnpdw1#
您似乎忘记从http://dkui3cmikz357.cloudfront.net/library50/c/cs50-library-c-3.0/cs50.c下载并链接到项目cs50.c文件
此类中有GetSting函数实现:
qgelzfjb2#
看看你的第一个include语句,你用““代替了〈〉。
uqcuzwp83#
在CS50课程的视频中,讲师使用插入符号(〈〉)而不是引号(““)。
fjaof16o4#
对于学习CS50类的任何人,如果不想每次都粘贴.c代码,也可以在编译时链接CS50代码。
将cs50.h和cs50.c放在与file. c相同的目录中,然后在命令行中键入以下命令:
“-l”将cs50.c和cs50.h文件链接到您的c文件(在编译为目标文件之后),“-o”指定编译输出的放置位置。
有关此here的更多信息
tag5nh1u5#
In your #include"cs50.h" header you should be typing it like this: #include<cs50.h>. Also, try doing:
而不是这个:
这样就可以消 debugging 误消息。
注:在第二周,他们会告诉你help50,但是如果你想的话,你现在就可以使用它。我自己发现它非常有用。下面是它的工作原理:在你的终端窗口(你执行./hello和clang的窗口)你应该输入:"help50 make hello"(不带引号),然后它将键入:请求帮助...用黄色显示。然后它会破译错误信息,并用更简单的语言输入。例如:
我打了个招呼,就出现了这个:
但是当我使用help50 make hello时,显示如下:
正如您所看到的,现在我知道了问题所在,并且可以解决它。Help50将错误消息解释为您可以理解的语言。
6ojccjat6#
你最好使用习题集1中的链接......它会引导你到Github中的VS代码应用程序,它已经为CS50配置好了。