Forum: Mikrocontroller und Digitale Elektronik In C C++ Library's verwenden


von Johannes H. (Gast)


Lesenswert?

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

von Noch einer (Gast)


Lesenswert?

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.

von Daniel A. (daniel-a)


Lesenswert?

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.

von Noch einer (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.