当我链接到一些c ++库时,对于每个*.lib,它与*.exp文件相关联.*.exp做什么?
***.lib / ***.exp
Run Code Online (Sandbox Code Playgroud)
导出(.exp)文件包含有关导出的函数和数据项的信息。LIB创建导入库时,还将创建一个.exp文件。链接直接或间接导入到另一个程序或从另一个程序导入的程序时,将使用.exp文件。如果您链接一个.exp文件,则LINK不会生成一个导入库,因为它假定LIB已经创建了一个。
您可以将LIB与/ DEF选项一起使用来创建导入库和导出文件。LINK使用导出文件来构建包含导出的程序(通常是动态链接库(DLL)),并使用导入库来解析对其他程序中这些导出的引用。
请注意,如果在准备步骤中创建导入库,则在创建.dll之前,必须在构建.dll时传递与构建导入库时传递的对象文件集相同的对象集。
在大多数情况下,您不需要使用LIB来创建导入库。当您链接包含导出的程序(可执行文件或DLL)时,LINK会自动创建一个描述导出的导入库。以后,当您链接引用这些导出的程序时,您将指定导入库。
但是,当DLL导出到它也直接或间接从中导入的程序时,必须使用LIB创建其中一个导入库。LIB创建导入库时,还将创建一个导出文件。链接DLL之一时,必须使用导出文件。