gpt4 book ai didi

c++ - Windows GUI 和 native C++

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:47 32 4
gpt4 key购买 nike

我正在制作一个名为“C++ 游戏开发”的学生项目。这是一款带有客户端和服务器的纸牌游戏。客户端应用程序包含几个我已经在 Visual Studio 2013 中使用 Windows 窗体创建的窗口。对于客户端/服务器通信,我决定使用 Internet Communications Engine (ICE) .在构建客户项目期间,我在 ICE 自动生成的代码中遇到了错误。我发现 ICE 不支持 C++/CLI,仅支持 native C++ 或 C#(我无法使用)。

所以现在我正处于十字路口,是用 native C++ 制作整个客户端应用程序(这意味着例如使用我不熟悉的 MFC)还是同时使用 native C++ 和 C++/CLI(把我的工作放在一起)已经完成了从 Windows 窗体到 CLR 类库的操作,并从具有入口点的 native C++ 项目链接到它)这也不是微不足道的。

我正在尝试选择耗时较少的选项。我要求帮助我估计这些方法的复杂性。我更喜欢第二个,但我不确定它是最简单的。

最佳答案

这取决于您的 GUI 中已有的复杂程度。如果您有一百个对话框/控件,那么用 native C++ 重写它可能是错误的答案。在这种情况下,将您的 GUI 变成一个库更有意义。

但是,将您的 GUI 作为一个进程并在 native C++ 中构建一个代理库以将 ICE 调用传递到您的服务器可能是一个更好的选择。 (所以 C++/CLI exe 调用一个新的 C++ 库中的函数,该函数对服务器进行 ICE 调用,反之亦然)。

如果您的 GUI 很小,那么最好在现代(并且更好地支持 C++/CLI)系统中重写它。 Qt 可能是当今原生 GUI 中的佼佼者(但也有其他选择,例如 MFC 或 wxWidgets)。即使在这些情况下,将您的网络子系统编码为 native 库仍然可能更好。然后,您可以更改 GUI 并根据需要尝试加载 GUI 堆栈,只需更改 1 个表示层即可将您的游戏移植到 Android 或 iOS。

第三种选择是选择不同的通信系统。虽然像 ICE 这样的 RPC 很好,但今天的“它所在的位置”是通过 REST 服务进行基于网络的通信(尝试嵌入式 c++ 网络服务器,如 Mongoose 或 NxWeb),如果你需要将数据推回客户端,这些支持 WebSockets,所以将提供您需要的所有功能。然后,您可以将 GUI 重写为基于 HTML 的!

因此:将您的通信放在 native C++ 库中。

关于c++ - Windows GUI 和 native C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28370279/

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