当我的程序所依赖的库取决于另一个库

时间:2014-10-08 16:37:30

标签: c

当我的程序所依赖的库依赖于另一个库时,在使用静态或动态链接编译程序时,是否应指定这两个库?

当我使用动态链接编译程序时,我是否应该在加载期间找到两个库?

感谢。

1 个答案:

答案 0 :(得分:1)

当您的EXE依赖于DLL A时,您应该在链接EXE时将导入库A.lib添加到链接器。

当您的DLL A依赖于DLL B时,您应该在链接A.DLL时将导入库B.lib添加到链接器。

运行EXE时,两个DLL都应在搜索路径中可用。

修改

构建可执行模块(即EXE或DLL)包括编译源文件并将编译器输出与库链接到可执行文件。

当您使用DLL时,您需要#include在编译源时定义DLL接口的头文件。这里不需要DLL的导入库(A.lib,B.lib)。

在构建过程的第二阶段,链接器创建可执行模块。链接器输入是编译器输出,静态库,运行时的导入库,如msvcr110.dll和A.dll的导入库。

因此,当我说“链接时”时,我指的是构建过程中链接器的操作。编译器此时已完成它的工作。如果使用Visual Studio,则必须将导入库A.lib添加到项目的linker设置中。