c++ - __declspec(dllimport) 实际上是如何工作的?

标签 c++ windows import

我试图了解动态链接的工作原理,并且我了解其中的大部分内容,但是现在编译器或链接器如何知道我究竟从哪个 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/

相关文章:

c++ - 使用 windows.h 和 WIN32_LEAN_AND_MEAN 时未定义时间

c++ - 使用 OpenCV 插值一维数组

C++11 线程段错误

C++ 类 : read value behave as different types

java - 如何在Windows中使用Runtime.getRuntime().exec(command)?

windows - 如何在 Windows 中以 30 毫秒的间隔执行 10 毫秒 CPU 时间操作?

c# - 带有显示错误的 Internet 代理服务器的 Windows WCF 客户端服务器违反了协议(protocol)。部分=响应状态行

python - 如何在开发机器上强制 ImportError? (密码模块)

java - 如何在 IntelliJ 中正确配置 Eclipse 项目?

MySQL 导入 CSV、转换日期格式 - 最佳实践