向Xcode添加头文件

向Xcode添加头文件,c,xcode,cs50,C,Xcode,Cs50,我正在尝试向Xcode添加一个C库。我从一个在线C类下载了这个库,压缩文件包含两个文件:cs50.C和cs50.h 我使用以下命令安装了这些文件: gcc -c -ggdb -std=c99 cs50.c -o cs50.o ar rcs libcs50.a cs50.o rm -f cs50.o chmod 0644 cs50.h libcs50.a sudo mv cs50.h /usr/include sudo cp libcs50.a /usr/lib 构建项目时,我收到以下错误消息:

我正在尝试向Xcode添加一个C库。我从一个在线C类下载了这个库,压缩文件包含两个文件:
cs50.C
cs50.h

我使用以下命令安装了这些文件:

gcc -c -ggdb -std=c99 cs50.c -o cs50.o
ar rcs libcs50.a cs50.o
rm -f cs50.o
chmod 0644 cs50.h libcs50.a
sudo mv cs50.h /usr/include
sudo cp libcs50.a /usr/lib
构建项目时,我收到以下错误消息:

Undefined symbols for architecture x86_64:
"_GetString", 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)
以下是我在程序中引用头文件的方式:

#include </usr/include/cs50.h>
#包括
如果不包括路径,则会收到“找不到文件”消息

我的Xcode版本是:版本4.5.2(4G2008a),我运行的是OS X 10.7.5

谢谢你的建议

更新:


一般来说,除非您有很好的理由,否则不应安装或修改
/usr
中的任何内容。此目录是为操作系统保留的,您可能会很快遇到很多问题-例如,如果您意外地覆盖了系统库或头文件,甚至在其中安装新内容,则更新操作系统时可能会出现问题

如果确实需要在系统范围内安装此软件,请将其放入
/usr/local

但是,由于您使用调试信息编译了库,因此我假设您也希望在项目中测试和使用它


为此,将源代码作为新的“C/C++库”目标添加到项目中要容易得多。然后,Xcode将处理所有难看的细节,例如编译、选择正确的处理器体系结构(32或64位),您将在Xcode中获得源代码级调试支持,如果您想安装应用程序或为其创建软件包,然后,Xcode还会自动为您绑定依赖项。

如果您试图使用gcc编译cs50.h库,我发现在大多数现代64位Mac上这是不成功的。Xcode 4.x通常需要64位兼容的库格式。GCC尚未更新为包含64位对象文件。Clang/LLVM是gcc的新兴替代品,Apple将其作为Xcode的首选编译器引擎。我还没有亲自尝试过,但将探索Xcode,为Xcode生成一个兼容的库。我正在edX学习Harvardx cs50x课程,这是一门很棒的课程,即使对于经验丰富的程序员来说也是如此。h库很有趣,因为它为各种变量类型(例如字符串、整数)提供了相对健壮的I/O例程。用于c编程语言的float,包括对缓冲区溢出攻击的良好保护。
实际上,您正在构建一个要添加到Xcode(也称为框架)的自定义动态库。如果您拥有apple developer帐户,请查看框架编程指南,它应该会很有用。

您是否在链接器选项中添加了
-lcs50
?对于
#include“cs50.h”
,您得到的确切错误消息是什么?我只是将文件添加到Xcode项目中,并让它进行构建,除非它们需要一些奇怪的构建环境。将它们移动到您的项目目录结构中,然后,在Xcode的相应文件夹中,选择RMB并选择“添加现有文件”或类似的内容。是的,我添加了-lcs50。我上传了我所做的事情的截图和实际的错误信息。@HotLicks,谢谢你的建议,成功了!如果将
-lcs50
添加到链接编译器标志,而不是源文件的编译标志,可能会有很大帮助。“GCC尚未更新为包含64位对象文件”对不起?