gpt4 book ai didi

c - 在没有宿主程序帮助的情况下,如何在同一个进程中协调不同的 DLL?

转载 作者:可可西里 更新时间:2023-11-01 11:37:42 24 4
gpt4 key购买 nike

我正在寻找一种方法来协调同一进程中的 DLL,以便在它们之间提供数据共享机制。目标是为所有 DLL 提供相同的共享代码,并让它们以这样一种方式进行协调,即由主程序加载的第一个将充当共享项的管理器,而其他人将使用此管理器。我无法修改主应用程序,因此不可能设置管理器并与其他 DLL 共享其内存地址。使用此机制的 DLL 集可能会有所不同,因此我不能明确假设其中一个将被加载。

我考虑的一种解决方案是将内存地址添加到进程的环境变量中。第一个 DLL 会看到环境变量尚未设置,创建管理器对象并将变量设置为其地址。其他 DLL 会看到该变量并从中创建一个指向管理器对象的指针。

这接近我想要的,但它似乎有点粗糙,因为不能保证环境变量由于某种原因尚未设置,并且 SetEnvironmentVariable/GetEnvironmentVariable 可能因各种原因而失败。

有没有更好的方法来处理这个问题?我正在寻找一种在进程上下文中存储和检索命名指针的方法,但如果您有更好的解决方案来解决让 DLL 协作的潜在问题,我也很乐意接受。

最佳答案

如何创建一个 named shared memory

这将允许您共享一部分内存,而无需获得在进程上下文中有效的地址。第一个加载的 DLL 创建共享内存,下一个 DLL 可以直接访问内存,您可以在此基础上构建自己的消息传递 API。

关于c - 在没有宿主程序帮助的情况下,如何在同一个进程中协调不同的 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com