2009-05-10 19 views
1

Ich habe eine einfache (und auch triviale) Banking-Anwendung, die ich in C++ geschrieben habe. Ich bin auf Ubuntu, also verwende ich GNOME (GTK +). Ich habe mich gefragt, ob ich meine gesamte GUI in C/GTK + schreiben und dann irgendwie mit meinem C++ - Code verknüpfen könnte. Ist das überhaupt möglich?C GUI, mit einem C++ - Backbone?

Hinweis: Ich möchte nicht Qt oder GTKmm verwenden, also bitte nicht diese als Antworten anbieten.

+0

@Matthew Flaschen: Wenn ich sage, dass es trivial ist, meine ich nur, dass es etwas ist, das ich zum Spaß mache, nicht für einen Job oder so etwas. – Kredns

Antwort

5

Ja, es ist eine sehr einfache Sache zu tun. Alles, was Sie tun müssen, ist einige der C++ - Funktionen als "extern C" verfügbar zu machen, so dass die Event-Handler und Callbacks in Ihrem UI-Code sie aufrufen können.

In dem Fall, dass Sie die vorhandene C++ - Quelle nicht ändern können - kein Problem. Schreiben Sie einfach ein C++ - Shim für Ihre Benutzeroberfläche, öffnen Sie diese Funktionen und rufen Sie von dort aus Backend-Funktionen auf.

+0

@Ben Collins: Können Sie einige Beispiele dafür nennen? Vielen Dank. – Kredns

+0

Sicher. Siehe hier: http://pastebin.com/f364909f2. Auch eine gute und kurze Referenz für diese Art von Sache ist hier: http://www.parashift.com/c++faq-lite/mixing-c-and-cpp.html –

1

Ich sehe nicht warum nicht, mit entsprechenden extern "C" Verwendung, damit Ihr C-Code in C++ aufrufen kann. Nun, natürlich, du machst es dir wahrscheinlich etwas schwerer, aber es ist theoretisch gesund.

0

Wie andere vorschlagen können Sie einen C-Wrapper für Ihre C++ - Bibliothek schreiben. Sie können das Front-End jedoch auch in C++ schreiben, auch wenn Sie nur die C-Untermenge verwenden. Ich kann verstehen, wenn Sie die Sprachmischung nicht mögen, aber es ist der einfachste Weg, weil Sie die Zeit sparen, den Wrapper zu schreiben.

0

Sie können Ihren GTK/C-Code einfach als C++ kompilieren, ohne GTKmm zu verwenden, und den C++ - Code nativ verwenden.

Die meisten gesunden C-Bibliotheken können aus natürlichem C++ - Code verwendet werden, und GTK + ist grundsätzlich eine C-Bibliothek.