【发布时间】:2020-11-19 13:24:00
【问题描述】:
我正在使用 DLL 在我的游戏中启用模组。在 Visual Studio 链接器中,我将 DLL 的 .lib 与可执行文件链接。一切正常,但添加多人游戏会出现问题。由于它是 DLL,如果我没记错的话,它只是整个 Windows 的一个进程。但我需要“client.exe”和“server.exe”在不共享相同 DLL 的情况下运行。我尝试为“server.exe”重命名 DLL,但后来告诉我它无法加载它,因为它仍然需要“未重命名”的 DLL。我怎样才能为“client.exe”和一个“server.exe”创建一个 DLL,而不让它们共享导致错误的相同?如果我创建 DLL 的副本并将其放在其他地方,它会有什么不同吗?从我读过的内容来看,它仅取决于名称而不是路径(也许我错了)。
【问题讨论】:
-
共享dll有什么问题?从技术上讲,它是否是相同的内存页面并不重要......客户端和服务器仍然是两个不同的进程。
-
DLL 不在多个进程之间共享。多个进程可能使用磁盘上的同一个 DLL 文件,但每个进程将 它自己的 DLL 副本加载到内存中。因此,无论您遇到什么错误,都可能是由于 DLL 编码中的错误,而不是共享同一 DLL 文件的客户端和服务器进程。
-
@CherryDT 他们共享相同的记忆,但我需要他们有不同的记忆
-
@MichaeltLoL DLL 默认情况下不相互共享内存,您必须自己明确设置,使用共享段或内存映射视图等。到目前为止,您的所有假设/预期似乎是错误的。那么,您遇到的实际问题是什么?
-
@RemyLebeau 好的,谢谢!
标签: c++ windows visual-studio dll