私は、C++ で作成した単純な (そして些細な) バンキング アプリケーションを持っています。私はubuntuを使用しているため、GNOME(GTK +)を使用しています。すべての GUI を C/GTK+ で記述し、それをどうにかして C++ コードにリンクできるかどうか疑問に思っていました。これは可能ですか?
注: Qt や GTKmm は使いたくないので、それらを回答として提供しないでください。
私は、C++ で作成した単純な (そして些細な) バンキング アプリケーションを持っています。私はubuntuを使用しているため、GNOME(GTK +)を使用しています。すべての GUI を C/GTK+ で記述し、それをどうにかして C++ コードにリンクできるかどうか疑問に思っていました。これは可能ですか?
注: Qt や GTKmm は使いたくないので、それらを回答として提供しないでください。
はい、それはとても簡単なことです。あなたがしなければならないのは、UIコードのイベントハンドラーとコールバックがそれらを呼び出すことができるように、いくつかのC++関数を「externC」として公開することです。
既存のC++ソースを変更できない場合でも問題ありません。UI用のC++シムを作成し、それらの関数を外部化して、そこからバックエンド関数を呼び出すだけです。
CコードがC++を呼び出すことができるように、適切なextern "C"を使用して、理由がわかりません。確かに、あなたはおそらく自分自身でそれを少し難しくしているでしょう、しかしそれは理論的には健全です。
他の人が提案しているように、C++ ライブラリの C ラッパーを作成できます。ただし、C サブセットのみを使用する場合でも、C++ でフロントエンドを作成することもできます。言語の混合が気に入らない場合は理解できますが、ラッパーを作成する時間を節約できるため、最も簡単な方法です。
代わりにwxWidgetsを使用するのはどうですか?
GTKmm を使用せずに GTK/C コードを C++ としてコンパイルし、C++ コードをネイティブに使用することができます。
ほとんどのまともな C ライブラリはネイティブ C++ コードから使用でき、GTK+ は基本的に C ライブラリです。