我确信这个问题已经被问过很多次了,但我无法弄清楚。耐心听我说。
因此,当您下载库时,您会得到一堆 .c 和 .h 文件,以及许多其他内容。现在假设您想使用这个库编写一个程序。
我将所有 .h 文件复制到我的项目目录中。它只是无法编译。
太好了,然后我将库作为一堆 .dll 来获取,并将这些 dll 复制到我的项目目录中。仍然无法编译。
这是如何运作的?
在为项目创建文件夹后,您会做什么?您将库包的哪些部分复制/粘贴到文件夹中?你如何使它能够编译?请跟我一起完成这些步骤。
- .h 文件放在哪里?
- .dll 文件放在哪里?
- 如何编译?
Thanks.
(我试图使用的库是 libpng,我在 Windows 中使用 MinGW,并且我希望像往常一样从命令行进行编译。)
(根据我收集的信息,您将 .h 文件放在目录 A 中,将 .dll 文件放在目录 B 中,您可以使用 -l 和 -L 编译器选项告诉编译器在哪里找到它们,这是正确的吗?)
以下是编译和构建基本 C 项目时发生的情况的简要指南:
第一阶段编译所有源文件 - 这将获取您编写的源文件并将它们转换为所谓的文件目标文件。在这个阶段,编译器需要知道您在代码中使用的所有函数的声明,甚至是在外部库中,因此您需要使用#include
包含您使用的任何库的头文件。这也意味着您需要告诉编译器这些头文件的位置。 With GCC http://gcc.gnu.org/你可以使用-I
命令行输入要搜索头文件的目录。
下一阶段是将所有目标文件链接到一个可执行文件中。在此阶段,链接器需要解析对外部库的调用。这意味着您需要对象形式的库。大多数库都会为您提供有关如何生成此文件的说明,或者可能会提供现成的文件。在 Linux 下,库文件通常是.a
or .so
文件,尽管它可能只是一个.o
。同样,您可以使用 -L 选项将库的目标文件的位置提供给 GCC。
因此你的命令行将如下所示:
gcc myProg.c -I/path/to/libpng/include -L/path/to/libpng/lib -lpng -o myProg.exe
(请注意,当使用-l
命令行GCC自动添加lib
到图书馆的开头,所以-lpng
causes libpng.a
被链接进去。)
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)