Windows GUI and native C++
Windows GUI and native C++
我正在做一个名为"C++游戏开发"的学生项目。这是一个有客户端和服务器的纸牌游戏。客户端应用程序包含一些我已经在Visual Studio 2013中使用windows窗体制作的窗口。对于客户端/服务器通信,我决定使用互联网通信引擎(ICE)。在内置客户端的项目中,我在ICE自动生成的代码中出现了错误。我发现ICE不支持C++/CLI,只支持本机C++或C#(我不能使用)。
因此,现在我正处于一个十字路口,无论是用本机C++制作整个客户端应用程序(例如,使用我不熟悉的MFC),还是同时使用本机C++和C++/CLI(将我在Windows窗体上所做的工作放在CLR类库中,并从带有入口点的本机C++项目链接到它),这都不是一件小事。
我正试着选择一个耗时较少的选项。我请求帮助我估计这些方法的复杂性。我更喜欢第二个,但我不确定它是最简单的。
这取决于GUI中已经有多复杂。如果你有一百个对话框/控件,那么用原生C++重写它可能是错误的答案。在这种情况下,将GUI制作成库更有意义。
然而,最好将GUI作为一个进程,并在本机C++中构建一个代理库,将ICE调用传递到服务器上。(因此,C++/CLI.exe调用新C++库中的一个函数,该函数对服务器进行ICE调用,反之亦然)。
如果你的GUI很小,那么在一个现代的(并且更好地支持C++/CLI)系统中重写它是最好的选择。Qt可能是目前原生GUI中的终极版本(但也有MFC或wxWidgets等替代品)。即使在这种情况下,将网络子系统编码为本地库也可能更好。然后,您可以更改GUI,并根据自己的喜好尝试加载GUI堆栈,只需更改一个表示层即可将游戏移植到Android或iOS。
第三种选择是选择不同的通信系统。虽然像RPC这样的ICE很好,但现在的"位置"是通过REST服务进行基于web的通信(尝试像Mongoose或NxWeb这样的嵌入式c++web服务器),如果你需要将数据推送回客户端,这些支持WebSocket,因此将提供你所需的所有功能。然后,您可以将GUI重写为基于HTML的!
所以:把你的命令放在一个原生的C++库中。
C++/CLI可以很好地使用本机C++代码。
将生成的代码粘贴到不使用/clr
构建的"静态库项目"中。然后将该静态库列为C++/CLI DLL的依赖项。
链接器将计算出其余部分。结果被称为"混合模式程序集"。
请注意,您的命令库可能不接受托管类型。没关系,C++/CLI可以很好地混合非托管数据模型和托管视图(UI)类。
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- Android Java USB for native cpp
- React Native (Android):无法通过 JNI 在 jobject 中返回字符串
- OpenCV Native Android cvtColor crash
- CMake Dlibdotnet.native生成错误
- 如何使用Java Native Interface在C++中导入python库-Android Studio
- Android Studio External Native Build 预编译标头
- 为什么march=native会破坏我的程序?
- React-Native android NDK
- 在 C++/CLI/C# 项目中启用"Native Code Debugging"导致应用程序崩溃
- Android Native libs - 如何对日志进行写入序列化
- java native loadLibrary 无法加载库 - Linux fedora25 java8
- Android Native:CMake 链接错误:未定义对 GL 函数的引用 - 即使包含并链接了 EGL 和 GLESv3
- React Native 0.40.0:指针和零之间的有序比较("NSNumber *"和"int")
- 如何在 Kotlin/Native 中将常量字符* 转换为 KString?
- webextension native application c++ hello world
- 如何在OS X上阻止QProgressDialog的'native close button'?
- 我希望QT-App看起来像QT-App,而不是Android-native
- 使用Android Native AassetManager文件层次结构
- Java Native方法,出了问题