【发布时间】:2013-06-24 15:48:26
【问题描述】:
我一直在尝试想出最好的方法来分发我的游戏代码的一部分,但不是全部,以便让人们可以修改游戏,但不能使用我的代码创建独立游戏。这就是已经有多少游戏可以运行,例如 Doom3 - 在 GPL 发布之前,SDK 只是为不可修改的 EXE 创建 DLL 的代码的一部分。
为此,我成功地将我的代码拆分为 EXE/SDK,但我担心的是 EXE 引用了 SDK 中的类。例如,如果我编译具有 Entity 类型对象数组的 EXE,则在 SDK 中声明 Entity,然后向该类添加另一个成员变量,编译 DLL,然后运行旧的 EXE新的DLL,是不是说明EXE有不正确的Entity大小信息?
还是我想多了?
【问题讨论】:
-
使用 dll 和 exe 的版本控制以确保它们兼容。如果您对 dll 中的类进行此类更改,那么您将增加其版本号。然后可执行文件将检查 dll 版本号,如果它不兼容,应该会正常失败。
-
这行不通,因为首先拥有 DLL 的目的是允许其他人在没有完整源代码的情况下进行修改。
-
他们对 dll 做了什么修改,还是说 dll 附带的头文件?
-
SDK 中包含他们想要的任何东西。 Doom3 在这方面非常灵活,SDK 中有大量代码可以随心所欲地更改,但 EXE 仍然有一大堆重要的东西,有时看起来几乎是随机的什么东西不包括在内。
标签: c++ dll sdk shared-libraries