我试图理解动态链接是如何工作的,我已经理解了大部分,但现在编译器或链接器如何知道我要从哪个dll导入呢?
例如,我有一个名为test_program.dll
的文件,它导出了一个名为test();
的函数,我在我的程序中使用__declspec(dllimport)
来引入该函数。在我的系统中可能有成千上万个具有相同名称并且还被导出的函数,编译器是如何区分它们的呢?
我试图理解动态链接是如何工作的,我已经理解了大部分,但现在编译器或链接器如何知道我要从哪个dll导入呢?
例如,我有一个名为test_program.dll
的文件,它导出了一个名为test();
的函数,我在我的程序中使用__declspec(dllimport)
来引入该函数。在我的系统中可能有成千上万个具有相同名称并且还被导出的函数,编译器是如何区分它们的呢?
test()
时,生成的对象文件会被标记为需要test
符号。.lib
文件提供给链接器,该库文件包含test
符号和加载你的dll所需的代码,其中包括dll的名称。.lib
文件,它也包含test
符号,这将加载不同的dll。#pragma comment(linker...)
来自动化地设置依赖关系,以实现这一点。 - Alan Birtles