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