我有一個使用SDL編寫的繪圖程序,用C++編寫。我只想在Vala中創建一個圖形界面,並使用它來調用程序中的函數(函數可以使用,我只想從GUI調用它們)。我正在尋找解決方案作爲VAPI,並且我正在考慮使用GObject,但我不能同時擁抱這兩者。有沒有人做過類似的事情,你能建議我解決我的問題嗎?Vala GUI和C++中的邏輯
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";
}
當我們這樣準備好了,我們可以編譯瓦拉代碼爲C.我們得到ccodetest.c
。現在
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#從工作邏輯中分離GUI
- 2. Java Swing:邏輯和GUI的分離
- 3. 從java中的GUI中分離邏輯
- 4. C#winforms:我的GUI和邏輯分離是否正確完成?
- 5. Qt GUI和業務邏輯模塊
- 6. 分離邏輯/ GUI和用戶交互
- 7. 關於GUI與邏輯類
- 8. 有沒有Java Swing GUI邏輯和業務邏輯解耦的工具/軟件?
- 9. 在C中是邏輯和(&&)的簡寫?
- 10. C++中的邏輯刪除和刪除[]
- 11. MVC中有多少GUI邏輯太多?
- 12. C#和多線程邏輯
- 13. C中的按位邏輯
- 14. 邏輯&&在C
- 15. 具有相同GUI和邏輯的Windows和Linux程序
- 16. 如何在Vala中使用Qt GUI?
- 17. 邏輯版本A或C(C和B)
- 18. C風格的邏輯和重構
- 19. 表和SQL邏輯的ASP.NET C#問題
- 20. 問題從邏輯試圖分離GUI
- 21. GUI類和邏輯類之間的相互作用?
- 22. WindowBuilder交互java的GUI和應用程序邏輯?
- 23. 域邏輯和業務邏輯
- 24. 模型邏輯和服務層邏輯
- 25. propostional邏輯和判刑謂詞邏輯
- 26. C# - 優化邏輯
- 27. 幫助C++邏輯?
- 28. C++邏輯問題
- 29. C#邏輯衝突
- 30. C++邏輯錯誤
是什麼讓你認爲你不能綁定在VAPI基於GObject的-API? *大多數可用的VAPI都是這樣做的...... – nemequ
我試圖將Vala代碼編譯爲C,然後創建一個目標文件。我從C++代碼創建了一個對象文件。然後我試着用g ++中的'-lglib'和'-lgobject'連接兩個文件。不幸的是,將Vala代碼中的對象與用C++編寫的函數鏈接會返回錯誤。 – Ocelpers
你能在這裏發佈錯誤嗎? – MrEricSir