繁体   English   中英

我可以编译一个依赖于库的 C 程序,但是这个库不是 ah 文件是二进制文件,因为它是编译过的?

[英]Can I compile a C program which depends of a library, but this library isn´t a .h file is a binary file, because it was compiled anteriority?

我在 C (program_a.c) 中有一个程序,该程序依赖于它没有在其主体中声明的一些函数,因为这些函数在另一个文件 (library.h) 中,但我没有 file.h或 file.c 只有我编译的版本是二进制文件。

我可以编译我的程序并使用这个不是啊或.c 文件的库吗?

如果您知道库中的函数,您可以制作自己的library.h以使编译器成功,然后您只需要 linker 以确保library.o (或.a或...)已链接。

如果您的程序正在使用来自这个外部编译库的 function func() ,那么您需要:

  1. func()声明- 通常它将在 header 文件中(通常随库提供)。 如果这个文件被称为profile.h ,你会在你的程序中调用func()的源代码中#include它。
  2. func()定义- 这个 function 的实现 - 虽然你看不到它,但它必须在这个库的二进制文件中。 您可以通过运行nm libprofile.a来验证它,它会显示库的函数名称(尽管有时如果在编译时删除了它的符号,它可能不会显示它们)。

如果您没有声明- 您的代码将无法编译。

如果您没有定义- 您的代码将不会链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM