Ho un programma di disegno che utilizza SDL, scritto in C++. Vorrei creare un'interfaccia grafica solo in Vala e usarla per chiamare funzioni da un programma (le funzioni sono pronte per l'uso e voglio solo chiamarle dalla GUI). Stavo cercando soluzioni come VAPI e stavo pensando di utilizzare GObject, ma non posso abbracciarle entrambe. Qualcuno ha fatto cose simili e mi può suggerire una soluzione al mio problema?GUI di Vala e logica in C++
risposta
Se si desidera utilizzare il codice C++ in Vala, vengono preparati correttamente. Ecco un esempio.
Per prima cosa devi dire al compilatore valac
che la funzione è definita da qualche altra parte. Usiamo la direttiva extern.
// ccodetest.vala
extern void cpp_test_function();
void main() {
stdout.printf ("This is Vala code\n");
cpp_test_function();
}
Poi le funzioni in C++ sono adeguatamente collegati con i file oggetto derivato da C, noi li dichiariamo come extern "C".
// cpplibrary.cpp
# include
using namespace std;
extern "C" void cpp_test_function() {
cout << "This is a C + + code\n";
}
Quando siamo così pronti, siamo in grado di compilare il codice Vala a C. Otteniamo ccodetest.c
.
valac -C ccodetest.vala
Ora possiamo usare gcc
per compilare il file oggetto. Otteniamo 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/
File C++ compilare il seguente.
g++ -o cpplibrary.cpp.o cpplibrary.cpp -c
Alla fine ci collega entrambi i file.
g++ -o ccode_test ccodetest.o cpplibrary.cpp.o -L /usr/lib/ -lglib-2.0 -lgobject-2.0
Il programma funziona come segue:
$ ./ccode_test
This is Vala code
This is a C++ code
- 1. Come utilizzare una GUI Qt con Vala?
- 2. Quanta logica GUI è troppo in MVC?
- 3. Consigli architetturali sull'implementazione della logica della GUI
- 4. Separazione dell'interfaccia utente e della logica in C#
- 5. Vala (linguaggio simile a C#) compila in C?
- 6. Vala sopravviverà?
- 7. Logica di proprietà Objective-C
- 8. Vala per plug-in pidgin
- 9. La produzione di Vala e Genie è pronta?
- 10. Generazione automatica gui in C#
- 11. Posso programmare per iPhone in Vala?
- 12. Esecuzione del comando di sistema in Vala
- 13. Il presenter esegue la logica della GUI nel pattern MVP?
- 14. registrazione con Vala
- 15. Vala è un linguaggio multipiattaforma?
- 16. Esempio di GUI Mediatore C++
- 17. Vala per Android?
- 18. Logica di Firebase e backend
- 19. Visualizzazione di una logica del metodo C#
- 20. Sintassi alternativa per C++, a la Genie per Vala?
- 21. Animazione e logica
- 22. Logica aziendale e dell'applicazione?
- 23. Barra di avanzamento e più thread, disaccoppiamento della GUI e della logica: quale modello di progettazione sarebbe il migliore?
- 24. C# GUI e il delegato utilizzano come livello di astrazione
- 25. Come posso importare altri file in Vala?
- 26. Sviluppo GUI con C++ in ambiente Windows
- 27. Come posso implementare una logica booleana user-friendly in una GUI Web Form?
- 28. È possibile? GUI in C#, app in C++
- 29. Programma C++ veloce, C# GUI, possibile?
- 30. Logica booleana (ordine delle operazioni) A e B o C
Cosa ti fa pensare, non è possibile associare un API GObject-based con un VAPI? * La maggior parte * dei VAPI disponibili fa proprio questo ... – nemequ
Ho provato a compilare il codice Vala su C e quindi a creare un file oggetto. Ho creato un file oggetto dal codice C++. Poi ho provato a collegare due file con '-lglib' e' -lgobject' in g ++. Sfortunatamente, il collegamento di un oggetto dal codice Vala con la funzione scritta in C++ restituisce un errore. – Ocelpers
Potresti postare l'errore qui? – MrEricSir