c++ - 在动态链接中,.exe更新时如何知道去哪里搜索库?

标签 c++ c dynamic linker libraries

据我了解,当 C 程序使用动态链接时,程序的编译版本 (.exe) 会将库的内存地址存储在某处。那当程序安装到别人的电脑上时,库的位置是不是不一样呢?或者,当你更新库时,它的内存地址不会不同吗?

最佳答案

C 和 C++ 都没有指定它是如何工作的。对于不同的操作系统和exe格式是不同的。要了解具体细节,您需要了解您的实现方式。

对您的问题的简短回答是,操作系统设置了您的程序运行的环境。它必须将程序附加到正确的位置,或者至少通知它。通常你启动你的程序,格式告诉操作系统它应该加载哪些库,然后它以某种方式链接地址。

通常也有一种方法可以手动执行此操作,并直接请求在运行时加载库。但在这些情况下可能不会发生调用的自动链接。

关于c++ - 在动态链接中,.exe更新时如何知道去哪里搜索库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45220416/

相关文章:

c - fopen() 总是返回 NULL

Valgrind gdbserver 是否会因任何违规而中断

c++ - 在 C++ 中增加循环队列的容量

c++ - 避免在本地范围内进行动态分配

c++ - 相同的代码, vector 更改为 unordered_set 时出错

c++ - 找到所有下楼梯的路径?

c - 将数组分配给函数宏

c++ - 无法将字符串从命令行转换为 float 组

c++ - 使用 Windows API 获取用户的桌面文件夹?

docker - 如何将未知的环境变量列表传递给Dockerfile中的命令