我想编写一个C ++程序,以便根据配置文件可以是控制台应用程序或Window应用程序。对于GUI我正在使用WxWidget。我应该分别在Windows和Linux(Buntu)中做什么。
有人可以提供一些简单的例子吗?
答案 0 :(得分:1)
使用条件编译在编译阶段执行此操作非常简单。
您的配置文件将包含您想要的预处理器定义。例如
#define GUI
或
#define CONSOLE
然后在每个要编译的文件中包含配置文件
#include "gui_or_console.h"
最后,使用条件编译告诉编译器要处理哪些代码
#idfef GUI
// some GUI code
#endif
#ifdef CONSOLE
// some CONSOLE code
#endif
答案 1 :(得分:1)
在运行时执行此操作的典型方法是将程序编译并链接为Windows应用程序。在运行时,您阅读配置。如果它是为GUI设置的,那么创建窗口并继续前进。如果它设置为控制台模式,那么您可以创建一个控制台窗口,将stdout / stdin / sterr流附加到它,然后关闭。
我写了一个像这样运行的程序。整个UI在纯虚拟接口后面抽象,具体实现提供控制台实现和GUI实现。在运行时,我实例化了正确的类型。构造函数构成了正确的窗口类型。然后主程序调用虚拟Run方法。控制台实现调用main的等价物。 GUI实现运行事件循环。
如果从一个命令行启动(而不是启动自己的控制台窗口),真正困难的部分是附加到现有控制台窗口。 Devstudio通过使用devstudio.com和devstudio.exe来做到这一点,但是相当复杂。