C++だったらGUI部分と処理部分を完全に分離して設計すればいい。
GUI用のクラスを作っておけば、windowsとlinuxで処理部分を共有できる。
もちろん、環境依存の部分は別クラスで作っておくことが前提だが。