In C C++ Library's verwenden

Gast #5273116
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
Gast #5273136
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.
#5273144
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.
Gast #5273161
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren