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

How to correctly share an object between .exe and .dll?

我必须访问 .exe 中创建并存储在 .dll 地址 space 中的对象。有很多答案提到 IPC 作为解决方案,但我不确定它能提供什么帮助。 IMO,IPC 只是进程之间的消息“聊天”,可以通过在调用方 (.exe) 上重新创建它们来共享原语。我无法重新创建该对象,因为它是由 .dll 端的某个第三方库创建的,如果我共享原始内存并且只是 reinterpret_cast 它,它可能是一个无效对象。我也不能共享指向该对象的指针,因为它只会共享虚拟内存地址,这在调用方方面可能是垃圾。我不想静态 link 我的图书馆。我该怎么办?

IPC 是一个广义的总括性术语,涵盖所有进程间通信,而不仅仅是共享内存(顺便说一句,这与“聊天”完全不同)。

幸运的是,您不需要任何类型的 IPC,因为您没有不同的进程。 dll和exe共享同一个地址space,所以直接return构造对象的指针直接使用,不需要重新解释。