Ubuntu + Eclipse + pthread_create= PROBLEM

devilmc

Mitglied
Hallo zusammen,


ich bin nun aus der Java-Welt erst mal ausgestiegen und beschäftige mich mit Object Orientierter Programmierung
in C++.

Ich will einen Thread programmieren, leider habe ich ein schwerwiegendes Problem, das ich nicht ganz verstehe.
Hier erstmal der Code.

int ConPicThread::initPicThread(){
cout << "initPicThread: " << endl;
//pthread_init();
int code = pthread_create( &picThread, NULL, sendCommand, _command);
return 0;
}

void * ConPicThread::sendCommand( void *ptr){
while(true){
if(newCommand){
cout << "sendCommand: " << _command << endl;
newCommand = false;
}
}
return NULL;
}

Folgende Fehlermeldung tritt beim Build All auf:

../src/ConPicThread.cpp: In member function ‘int ConPicThread::initPicThread()’:
../src/ConPicThread.cpp:28: error: argument of type ‘void* ( ConPicThread:: )(void*)’ does not match ‘void* (*)(void*)’


Die Zeile 28 ist die Zeile mit pthread_create.

Ich hab keinen Schimmer was er mir damit sagen will.
Wahrscheinlich ist das Problem trivial, aber ich checks nicht, ich habe mich an diverse Tutorials gehalten und nichts hat funktioniert.

Würde mich über schnelle Hilfe freuen...

Grüße
Devilmc
 
danke für die schnelle antwort, was du meinst verstehe ich,
aber das bsp, was du mir gepostet hast, da steig ich 1. nicht durch und 2. funktioniert es noch nicht mal wenn ich es teste...

kriege dann immer für die Zeile 28 undefinedes reference to "pthread_create" collect2: ld returned 1 exit status.

gibt es vieleicht noch eine andere lösungsmöglichkeit für mich, oder gibt es vieleicht eine Bibliothek die das ganze vereinfacht, ähnlich wie in Java z.B.?
 
danke für die schnelle antwort, was du meinst verstehe ich,
aber das bsp, was du mir gepostet hast, da steig ich 1. nicht durch und 2. funktioniert es noch nicht mal wenn ich es teste...

kriege dann immer für die Zeile 28 undefinedes reference to "pthread_create" collect2: ld returned 1 exit status.

gibt es vieleicht noch eine andere lösungsmöglichkeit für mich, oder gibt es vieleicht eine Bibliothek die das ganze vereinfacht, ähnlich wie in Java z.B.?

Der Fehler tritt aber beim Linken auf. Linkst du vllt nicht gegen die thread-bibliotek oder so? -lbibliotek hilft:
Code:
g++ -lpthread input.cpp -o output
 
also bei eclipse kommt der obenen genannt fehler und wenn ich es über die Konsole mit dem oben geschrieben Befehl sagt er mir anstatt undefined reference to pthread_create, undefinded reference to main
 
Naja in Eclipse musste dann eben einstellen, dass er gegen libpthread linken soll. Und wenn du das selbst kompilierst, musst du natürlich ne main()-Funktion schreiben, bzw das ganze erstmal nicht linken (mit -c), das für alle anderen Quelldateien tun und dann zusammen gegen libpthread linken.

Sieh es als einen zusätzlichen Classpath, denn du für Java einstellen musst. Wenn du das nicht tust findet der compiler die entsprechenden .class-Dateien nicht und kann das nicht übersetzen...
 
ah ok danke... ich habe bisher immer nur mit visual studio programmiert, da gabs diese probleme nicht bzw wenn dann rein c da ging das dann meist auch.
das problem hat sich dann jetzt aber erledigt. ich danke für deine hilfe
 
Zurück