tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
1109
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    devilmc devilmc ist offline Mitglied Silber
    Registriert seit
    Mar 2008
    Beiträge
    51
    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
     

  2. #2
    OnlyFoo OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    470
    die Funktion erwartet eine Funktion als Parameter, die als
    Code c:
    1
    
    void name( void* );
    deklariert ist. Du übergibst ihr aber eine, die als
    Code cpp:
    1
    
    void Klasse::name( void* );
    definiert ist.


    Schau mal hier nach: http://www.daniweb.com/forums/thread115838.html
     

  3. #3
    devilmc devilmc ist offline Mitglied Silber
    Registriert seit
    Mar 2008
    Beiträge
    51
    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.?
     

  4. #4
    OnlyFoo OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    470
    Zitat Zitat von devilmc Beitrag anzeigen
    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 :
    1
    
    g++ -lpthread input.cpp -o output
     

  5. #5
    devilmc devilmc ist offline Mitglied Silber
    Registriert seit
    Mar 2008
    Beiträge
    51
    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
     

  6. #6
    OnlyFoo OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    470
    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...
     

  7. #7
    devilmc devilmc ist offline Mitglied Silber
    Registriert seit
    Mar 2008
    Beiträge
    51
    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
     

Ähnliche Themen

  1. Ubuntu 9.10 Internet Problem
    Von CPoly im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 10.08.10, 10:24
  2. Antworten: 1
    Letzter Beitrag: 21.07.10, 22:46
  3. WebDAV & FTP Support für Eclipse Galileo Ubuntu
    Von nepda im Forum Coders Talk
    Antworten: 3
    Letzter Beitrag: 02.07.09, 16:30
  4. Ubuntu 8.04 -> Problem
    Von Johannes7146 im Forum Linux & Unix
    Antworten: 5
    Letzter Beitrag: 30.04.08, 14:30
  5. Problem mit Grafik...[Ubuntu]
    Von pamax im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 08.05.07, 18:22

Stichworte