对不起,如果这听起来有点新鲜。我正在编写一个跨平台的应用程序来学习C ++,如果它能够很好地运行,它可以帮助人们。我希望能够以两种方式使用它:通过设计的GUI(可能正在使用QT),或者通过命令行为想要超越的专家用户使用。
我想知道如何在GUI应用程序和核心之间进行通信,因为这将是开源的,我希望代码是美观和干净的。
有没有通常可以接受的方法呢?
答案 0 :(得分:3)
您可以遵循一些方法。
首先编写CLI,然后将GUI编写为独立程序,为所有处理生成CLI版本(通过system(),popen(),fork(),g_spawn(),CreateProcess()或类似的电话)。这可能比编写库稍微繁琐一些,但如果您已经编写了CLI,或者在批处理这样的情况下,GUI只是一个奇特的选择参数,那么效果会很好。
将应用程序拆分为两个,但分为三个部分:库,GUI和CLI。该库将包含GUI和CLI之间的所有共享逻辑,例如处理输入格式,编辑操作等。 GUI部分将使用库中的函数实现图形界面,CLI将使用相同的库实现命令行界面。
使GUI应用程序接受命令行参数,并且如果传递的参数指示在CLI模式下调用它,则避免初始化窗口小部件库。对于主要的图形应用程序(例如位图编辑器或需要公开脚本操作的编程IDE),这是可以的。请注意,在Windows上进行此操作需要一些额外的黑客攻击,请参阅this answer。另请注意,这将使在没有窗口系统的服务器上运行应用程序变得更加困难,因为它仍然会链接GUI库。