我正在为外部硬件开发一个旧的 DLL 接口库。
该库使用共享数据段 ( #pragma data_seg(...)
) 在进程之间共享硬件状态的结构。
我认为,基于此,DLL 仅由 Windows 加载一次,但我发现加载 DLL 的进程必须从同一路径加载它,以便它们之间的整个通信正常工作。甚至图书馆的文档也说明了这一点。
在链接页面中明确报告:
如果内存中已经加载了具有相同模块名称的 DLL,则系统在解析到加载的 DLL 之前只检查重定向和清单,无论它位于哪个目录。系统不会搜索 DLL。
所以我有点困惑...... DLL 的位置是否会影响共享数据段(从不同进程的角度来看)?
证据表明确实如此,但我误解了文档吗?