如果没有头文件,.lib文件是否毫无用处

Are .lib files useless without the header files?

本文关键字:文件 是否 毫无用处 lib 如果没有      更新时间:2023-10-16

我有一些.lib文件,但我无法访问.h头文件。这是否意味着.lib文件现在毫无用处?

如果没有,我如何再次使用它们?

我试着在我的程序中使用这一行,但它似乎没有被编译成最终的可执行文件(用CFF资源管理器验证)。

#pragma comment(lib, "SomeLibFile.lib")

那么,链接.lib文件的唯一方法是使用它的头文件吗?是否有任何工具可以恢复.lib文件的头文件?

这取决于.lib文件代码的编写方式。如果它是一个c api,这就是extern关键字的作用。您可以找到某种程序来显示函数导出。然后您可以在代码中将它们声明为extern。但问题在于你的数据结构。

无论如何,从技术上讲,您不必拥有头文件,您可以自己定义数据结构,并使用extern关键字声明函数。

当您在编译过程结束时运行链接器时,您可以直接链接.lib。

您可以通过在链接器命令行上传递.lib文件来链接它,不需要#pragma

当然,实际使用它内部的任何东西都需要知道调用约定、函数签名、用户定义类型的布局等。这些通常都由头文件提供,但也可以在文档中找到。

在任何情况下,头文件都不是编译器生成的(MIDL和CORBA确实使用机器生成的头文件,但头中的所有信息仍然手动输入.idl文件)。除非您的技术使用类型库,否则所需的信息不会保存在DLL中。