我有一个 C 语言的程序 (program_a.c) 这个程序依赖于一些它没有在它的主体中声明的函数,因为这些函数在另一个文件 (library.h) 中,但我没有文件 .h 或文件 .c 只有我编译的版本是二进制文件。
我可以编译我的程序并使用这个不是 .h 或 .c 文件的库吗?
最佳答案
如果您的程序正在使用函数 func()
从这个外部编译库然后你需要有:
-
func()
声明 - 通常它位于头文件中(通常随库一起提供)。如果此文件名为profile.h
你会#include
它来自您程序中调用func()
的源代码. -
func()
定义 - 这个函数的实现 - 虽然你看不到它,但它必须在这个库的二进制文件中。您可以通过运行nm libprofile.a
来验证它它将向您显示库的函数名称(尽管有时如果在编译时删除其符号,它可能不会显示它们)。
如果您没有声明 - 您的代码将无法编译。
如果您没有定义 - 您的代码将无法链接。
关于我可以编译一个依赖库的 C 程序,但是这个库不是 .h 文件,而是一个二进制文件,因为它是先编译的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56247627/