C++ 如何在.exe和.dll之间正确共享对象?

C++ 如何在.exe和.dll之间正确共享对象?,c++,ipc,shared-memory,C++,Ipc,Shared Memory,我必须访问.exe中创建并存储在.dll地址空间中的对象。有很多答案提到IPC是一种解决方案,但我不确定它能有什么帮助。依我看,IPC只是进程之间的一条消息“聊天”,可以通过在调用方(.exe)上重新创建原语来共享原语。我无法重新创建该对象,因为它是由.dll一侧的某个第三方库创建的,如果我共享原始内存并只是重新解释它,它可能是无效对象。我也不能共享指向该对象的指针,因为它将只共享虚拟内存地址,而该地址很可能是调用方的垃圾。我不想静态链接我的库。我该怎么办?IPC是一个涵盖所有进程间通信的宽泛术

我必须访问.exe中创建并存储在.dll地址空间中的对象。有很多答案提到IPC是一种解决方案,但我不确定它能有什么帮助。依我看,IPC只是进程之间的一条消息“聊天”,可以通过在调用方(.exe)上重新创建原语来共享原语。我无法重新创建该对象,因为它是由.dll一侧的某个第三方库创建的,如果我共享原始内存并只是
重新解释它,它可能是无效对象。我也不能共享指向该对象的指针,因为它将只共享虚拟内存地址,而该地址很可能是调用方的垃圾。我不想静态链接我的库。我该怎么办?

IPC是一个涵盖所有进程间通信的宽泛术语,而不仅仅是共享内存(顺便说一句,它与“聊天”完全不同)


幸运的是,您不需要任何类型的IPC,因为您没有不同的进程。dll和exe共享相同的地址空间,因此只需返回指向构造对象的指针并直接使用它,无需重新解释。

IPC是一个涵盖所有进程间通信的宽泛术语,而不仅仅是共享内存(顺便说一句,它与“聊天”完全不同)


幸运的是,您不需要任何类型的IPC,因为您没有不同的进程。dll和exe共享相同的地址空间,因此只需返回指向构造对象的指针并直接使用它,无需重新解释。

“\uu我不能共享指向该对象的指针,因为它将只共享虚拟内存地址,而该地址很可能是调用方的垃圾。”为什么会是这种情况?@下划线d是的,你是对的。我真的需要读一些关于操作系统内存组织的书“\uu我不能共享指向该对象的指针,因为它只共享虚拟内存地址,而该地址在调用方可能是垃圾。”\u“为什么会这样?@下划线\d是的,你是对的。我真的需要读一些关于操作系统内存组织的书