我写了一个可以从comand行使用的C++软件,显然可以在不同的平台(Linux,Windows和Mac)中编译和执行。
特别是这个软件非常简单,它只是在命令终端中显示一个带有几个选项的菜单,相应地获取输入文件(.csv),在几秒钟内运行,然后打印回输出文件(也.csv)。
现在我想为它编写一个独立于平台的 GUI,而无需更改我的原始源代码。
哪种语言最好?C++?爪哇岛?有人对此有经验或建议吗?
谢谢!
您将始终需要更改一些C++源代码,特别是因为 GUI 工具包都是事件驱动的,因此基于一些事件循环(通常由工具包库提供)。
或者,您可能将GUI作为一个单独的程序(启动命令行操作),与命令行程序的某种形式的IPC(通常是管道)进行通信,您可能仍然需要扩展
我建议使用Qt5,这是一个跨平台(Linux,Windows,MacOSX,Android等)的图形用户界面框架库,用于C++。如果可能,请使用最新版本的Qt和C++11中的代码(因为闭包变得非常有用)。
另一种方法(仍然需要架构更改)可能是通过使用一些HTTP服务器库,如libonion或Wt(或者POCO)使你的软件成为一个专门的Web服务器;那么GUI将是任何最近的Web浏览器。您可能需要一些Web编码技能(AJAX,Javascript等),并且您将更好地理解延续和Web浏览之间的关系。(另见这个和那个)。
如果您的软件运行得足够快(例如,不到几分之一秒),则可以将其核心处理设置为GUI程序的回调函数(或Qt插槽)。但是你不应该让一个函数运行超过零点几秒(否则,用户界面的响应能力将不够快),至少在主 GUI 线程中是这样。否则,将计算拆分为多个部分或切片(例如,GUI 工具包中的"空闲处理",CPS 和协程是一个相关概念),以确保事件循环频繁(每秒至少 5 或 10 次)重新启动,或采用多线程方法(在 GUI 主线程之外使用计算线程), 这会带来痛苦的同步问题(例如,您将使用互斥锁)。
顺便说一句,好的问题不是"最佳"语言,而是找到一个足够好的方法、库和框架。
如果你知道C++试试QT,或者寻找不同的跨平台 GUI 解决方案。
您可以公开一些类似 RPC 的服务,并让前端查询您的C++后端。通过这种方式,您可以使用另一种语言编写UI,甚至可以在Web界面上公开它。
C++很了解,使用WxWidgets将是不错的选择。