如何导入 c 库?
how do I import a c library?
我是编程新手,正在学习 cs50 在线课程,该课程提供了一个带有 IDE 的在线容器,但为了离线完成问题集,我下载了库文件,但一直无法使用要在我的代码中引用它们,库导入语句被声明为未使用并且该库中的函数被标记为不存在,任何人都可以伸出援手吗? print from the issue
下载所有文件,我想它们是cs50.h和cs50.c.
将这两个文件放在主文件的同一目录中,并像这样对 cs50.h 使用 include 语句:
#include "cs50.h"
当我们使用不在标准库文件夹中的库时,我们必须用""
而不是<>
[=21=来包含它]
编者注
上述说法令人震惊,因为它具有误导性。您 可以 实际上使用 <>
来包含您自己的 header,前提是您将那些 header 所在的目录作为搜索编译器的路径。
假设您要编译 foo.c,它使用位于 /where/bar/lives/include/ 目录中的名为 bar.h 的 header 文件,以及 /where/bar/lives/lib/ 目录中名为 libbar.a 的库,那么在大多数 C 编译器中,您可以使用 -I
标志和 -L 标志来包含和 link项目中的正确位:
要编译你的程序foo.c你会:
cc -I/where/bar/lives/include -o foo.o -c foo.c
对于link你会:
cc -o foo foo.o -L/where/bar/lives/lib -lbar
这两个步骤将生成您的二进制程序 foo
有趣的是,您可以使用 -I.
和 -L.
来包含当前的工作目录,并使用 <>
来满足您的需求。
首先,该机制在 C 语言中称为 include
,正如代码本身所建议的那样。
那么,您的问题在#include
声明中。使用 <...>
告诉编译器(特别是预处理器)查找系统中安装的库。对于 include
个本地图书馆,您应该使用 "..."
。使用它时,还要注意路径,因为它是相对的。
因此,考虑到您的文件夹结构,include
语句应该是
#include "src/cs50.h"
我是编程新手,正在学习 cs50 在线课程,该课程提供了一个带有 IDE 的在线容器,但为了离线完成问题集,我下载了库文件,但一直无法使用要在我的代码中引用它们,库导入语句被声明为未使用并且该库中的函数被标记为不存在,任何人都可以伸出援手吗? print from the issue
下载所有文件,我想它们是cs50.h和cs50.c.
将这两个文件放在主文件的同一目录中,并像这样对 cs50.h 使用 include 语句:
#include "cs50.h"
当我们使用不在标准库文件夹中的库时,我们必须用[=21=来包含它]
""
而不是<>
编者注
上述说法令人震惊,因为它具有误导性。您 可以 实际上使用 <>
来包含您自己的 header,前提是您将那些 header 所在的目录作为搜索编译器的路径。
假设您要编译 foo.c,它使用位于 /where/bar/lives/include/ 目录中的名为 bar.h 的 header 文件,以及 /where/bar/lives/lib/ 目录中名为 libbar.a 的库,那么在大多数 C 编译器中,您可以使用 -I
标志和 -L 标志来包含和 link项目中的正确位:
要编译你的程序foo.c你会:
cc -I/where/bar/lives/include -o foo.o -c foo.c
对于link你会:
cc -o foo foo.o -L/where/bar/lives/lib -lbar
这两个步骤将生成您的二进制程序 foo
有趣的是,您可以使用 -I.
和 -L.
来包含当前的工作目录,并使用 <>
来满足您的需求。
首先,该机制在 C 语言中称为 include
,正如代码本身所建议的那样。
那么,您的问题在#include
声明中。使用 <...>
告诉编译器(特别是预处理器)查找系统中安装的库。对于 include
个本地图书馆,您应该使用 "..."
。使用它时,还要注意路径,因为它是相对的。
因此,考虑到您的文件夹结构,include
语句应该是
#include "src/cs50.h"