如何在 windows 上包含外部 C 库
How to Include external C library on windows
我是 C 的新手,我正在尝试使用任何 IDE,仅 text-editor 和 minGW 编译器在 windows cmd 上。在这种情况下,库是 libPNG
,我真的很想了解这个过程是如何工作的 不仅是这个库。
如果有更好的方法(也更简单),我也想知道。
你有两部分需要处理:
- 编译,
- 链接中。
编译
在编译中,当你将源文件转换为目标文件时,你的编译器必须知道外部库提供了哪些功能。
您可以声明您使用的每个函数,或者您可以在您的代码中包含库头文件:
#incude <library_file.h>
这还不够,你必须告诉你的编译器在哪里可以找到这个文件:
-I<path_to_lib_folder>
与 gcc
/I<path_to_lib_folder>
与 cl
(visual studio 编译器)
正在链接
在链接过程中,将目标文件和库文件放在一起构造一个可执行文件。
你需要告诉链接器
- 它必须使用哪些文件以及
- 在哪里可以找到库文件
您通过 -l
选项告诉链接器要使用哪些文件,例如,-lfoo
将告诉它搜索 libfoo.so lib
注意:使用 cl
,您可以使用 #pragma comment (lib, "libfoo.lib")
直接在源代码中指定要使用的库
添加您指定的位置:
-L<path_to_lib_folder>
与 gcc
/LIBPATH:<path_to_lib_folder>
与 link
(visual studio 链接器)
您也可以使用动态链接,但让我们从第一步开始。
我是 C 的新手,我正在尝试使用任何 IDE,仅 text-editor 和 minGW 编译器在 windows cmd 上。在这种情况下,库是 libPNG
,我真的很想了解这个过程是如何工作的 不仅是这个库。
如果有更好的方法(也更简单),我也想知道。
你有两部分需要处理:
- 编译,
- 链接中。
编译
在编译中,当你将源文件转换为目标文件时,你的编译器必须知道外部库提供了哪些功能。
您可以声明您使用的每个函数,或者您可以在您的代码中包含库头文件:
#incude <library_file.h>
这还不够,你必须告诉你的编译器在哪里可以找到这个文件:
-I<path_to_lib_folder>
与gcc
/I<path_to_lib_folder>
与cl
(visual studio 编译器)
正在链接
在链接过程中,将目标文件和库文件放在一起构造一个可执行文件。
你需要告诉链接器
- 它必须使用哪些文件以及
- 在哪里可以找到库文件
您通过 -l
选项告诉链接器要使用哪些文件,例如,-lfoo
将告诉它搜索 libfoo.so lib
注意:使用 cl
,您可以使用 #pragma comment (lib, "libfoo.lib")
添加您指定的位置:
-L<path_to_lib_folder>
与gcc
/LIBPATH:<path_to_lib_folder>
与link
(visual studio 链接器)
您也可以使用动态链接,但让我们从第一步开始。