gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:47:02 24 4
gpt4 key购买 nike

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

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

最佳答案

如果您的程序正在使用函数 func()从这个外部编译库然后你需要有:

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

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

如果您没有定义 - 您的代码将无法链接。

关于我可以编译一个依赖库的 C 程序,但是这个库不是 .h 文件,而是一个二进制文件,因为它是先编译的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56247627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com