C++で書かれたSDLを使用する描画プログラムがあります。私はValaでのみグラフィカルインターフェイスを作成し、プログラムから関数を呼び出すために使用したいと考えています(関数は使用準備ができており、GUIから呼び出したいだけです)。私はVAPIとしてソリューションを探していましたが、私はGObjectの使用を考えていましたが、私は両方を受け入れることはできません。誰もが似たようなことをやったことがありますか、私の問題に対する解決策を提案できますか?C++のVala GUIとロジック
5
A
答えて
13
ValaでC++コードを使用する場合は、適切に準備します。ここに例があります。
まず、valac
コンパイラに、その関数が他の場所で定義されていることを伝える必要があります。 externディレクティブを使用してみましょう。
// ccodetest.vala
extern void cpp_test_function();
void main() {
stdout.printf ("This is Vala code\n");
cpp_test_function();
}
そして、C++の関数を適切にCから派生したオブジェクトファイルとリンクされている、我々はにextern「C」として宣言します。
// cpplibrary.cpp
# include
using namespace std;
extern "C" void cpp_test_function() {
cout << "This is a C + + code\n";
}
我々は準備ができているとき、私たちは私たちがccodetest.c
を取得するC.にValaのコードをコンパイルすることができます。
valac -C ccodetest.vala
今、私たちは、オブジェクトファイルをコンパイルするgcc
を使用することができます。我々はccodetest.o
を得る。
gcc-o ccodetest.o ccodetest.c-c-I /usr/include/glib-2.0/ -I /usr/include/glib-2.0/glib/ -I /usr/lib/glib-2.0/include/
ファイルC++、次のようにコンパイルします。終わり
g++ -o cpplibrary.cpp.o cpplibrary.cpp -c
は、我々は両方のファイルをリンクします。
g++ -o ccode_test ccodetest.o cpplibrary.cpp.o -L /usr/lib/ -lglib-2.0 -lgobject-2.0
次のようにプログラムが動作します。
$ ./ccode_test
This is Vala code
This is a C++ code
関連する問題
- 1. C++ロジック、c#gui
- 2. 個別のJavaFX GUIとロジック
- 3. GUIとC++のメインプログラムのC#
- 4. GUIロジックの実装に関するヒント
- 5. Cスタイルのロジックとリファクタリング
- 6. どうすればC++をVALAに混ぜるのですか
- 7. Valaの
- 8. 同じGUIとロジックを持つWindowsとLinuxプログラム
- 9. SWIGのC++とJava GUIリンケージ
- 10. GUIプログラミングのためのC++とC#
- 11. Valaのユニットテストフレーム
- 12. vala webkitのコンテキストメニュー
- 13. Valaの関数とプロパティの違い
- 14. Vala for pidginプラグイン
- 15. Valaでロギング
- 16. C#ユニティif文のロジック
- 17. C++の多重継承ロジック
- 18. C#のクエリ拡張ロジック
- 19. C#属性ロジックの承認
- 20. JavaのGUIからロジックを分離する
- 21. C++ dllとQT GUIの間の通信
- 22. MFCのC++ GUI - ページネーションウィジェット
- 23. グラフィックスベースのC++ GUIフレームワーク?
- 24. ウィザードインストールのC++ GUIテスト
- 25. GUIでC#のマルチスレッドアプローチ
- 26. Windows GUIのC++プログラミング
- 27. c#GUIレイアウトマネージャー
- 28. C#GUIスレッドエラー
- 29. C#GUIでキープレス
- 30. Mediator C++ GUIサンプル
あなたはVAPIでのGObjectベースのAPIをバインドすることはできませんだと思いますか? *利用可能なVAPIの大半はそれだけです... – nemequ
私はValaコードをCにコンパイルし、オブジェクトファイルを作成しようとしました。私はC++コードからオブジェクトファイルを作成しました。そして、g ++の '-lglib'と' -lgobject'で2つのファイルをリンクしようとしました。残念ながら、オブジェクトをValaコードからC++で書かれた関数にリンクするとエラーが返されます。 – Ocelpers
ここにエラーを投稿できますか? – MrEricSir