Если бы я занимался этой проблемой, я бы использовал TCL / TK для создания GUI, а затем создавал расширение TCL в C / C ++, которое можно вызывать из TCL / TK. Это одна из тех вещей, в которых TCL / TK действительно хорош (другие динамические языки тоже могут это делать, но мне нравится TCL / TK). Вы создаете общий libray (.so в Unix или .dll в windows) с битами C ++, и они импортируются как команды в TCL при загрузке библиотеки.
Swig, который уже упоминался, - это инструмент, который помогает автоматизировать процесс упаковки, он может взять ваш код C ++ и создать оболочку, которая позволяет загружать его в несколько языков, таких как TCL, Perl, Python, Ruby ...
Начните с http://www.tcl.tk/ для большого количества информации TCL и TK.