我试图了解动态链接的工作原理,并且我了解其中的大部分内容,但是现在编译器或链接器如何知道我究竟从哪个 dll 导入?
例如我有 test_program.dll
导出一个名为 test();
的函数我用了 __declspec(dllimport)
在我导入该函数的程序中,我的系统中可能有数千个函数具有相同的名称并且也被导出,编译器如何区分它们?
最佳答案
当您使用 test()
在您的代码中,生成的目标文件被标记为需要 test
的符号。 .
然后您提供 .lib
将您的 dll 文件复制到链接器,lib 包含 test
的符号并包含加载 dll 所需的代码,其中包括 dll 的名称。
您可以提供不同的 .lib
文件还包含 test
将加载不同 dll 的符号。
关于c++ - __declspec(dllimport) 实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63166624/