Hallo liebe Forenbesucher, ist eine ziemlich allgemeine Frage. Also wie im Betreff schon erwähnt ist meine Frage, ob es möglich ist in C C++ Bibliotheken zu verwenden. Im speziellen will ich die QT5 benutzen, jedoch ist das Problem, dass diese nur C++ kompatibel ist. Ich habe auch gehört, dass es möglich ist, den Source-Code als .cpp (also als C++) Datei abzuspeichern und in dieser .cpp Datei reinen C-Code zu verwenden. Somit kann ich die wenigen C++ Codezeilen, die ich für QT5 brauche, in C++ schreiben und den rest wie üblich in C. Ist das eigentlich Möglich? Ich hoffe Ihr könnt mir da weiterhelfen. Mit freundlichen Grüßen Johannes
Theoretisch ist das möglich, bei der Qt hast du ja ein ganz normales int main(int argc, char *argv[]). Aber praktisch läuft es darauf hinaus: Du schreibst ein Qt C++ Programm und bereitest deine alten C Module so auf, dass du sie in das Qt Konzept einhängen kannst.
Normalerweise kann man einen C Wrapper für C++ Libraries erstellen, aber bei QT dürfte dies nicht sinnvoll machbar sein, weil QT für manche Dinge auch selbst noch code erzeugen muss. Es ist jedoch möglich C, C++, Fortran, etc. in verschiedenen Quellcodedateien zu verwenden und in einem Programm zusammenzulinken. Beispiel: a.cpp:
1 | #include <iostream> |
2 | |
3 | extern "C" void c_sayHello(); |
4 | |
5 | class HelloClass { |
6 | public:
|
7 | static void sayHello(){ |
8 | std::cout << "Hello from C++" << std::endl; |
9 | c_sayHello(); |
10 | }
|
11 | };
|
12 | |
13 | extern "C" void sayHello(){ |
14 | HelloClass::sayHello(); |
15 | }
|
main.c:
1 | #include <stdio.h> |
2 | |
3 | void sayHello(void); |
4 | void c_sayHello(void){ |
5 | printf("Hello from C\n"); |
6 | }
|
7 | |
8 | int main(){ |
9 | sayHello(); |
10 | }
|
Compilieren:
1 | g++ -std=c++98 -Wall -Werror -Wextra -pedantic a.cpp -c -o a.o |
2 | gcc -std=c99 -Wall -Werror -Wextra -pedantic main.c -o main.o |
3 | g++ a.o main.o -o main |
4 | ./main |
Ausgabe:
1 | Hello from C++ |
2 | Hello from C |
Man könnte also C++ für Dinge wie die GUI benutzen, und C für den rest.
> bei QT dürfte dies nicht sinnvoll machbar sein
PyQt. Der Python Interpreter selbst ist in C geschrieben. Und der
Wrapper ist so vollständig, dass man die original Trolltech Doku
benutzen kann.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.