Undefined Referenzprobleme bei Verwendung von Semaphoren

8

Ich spiele mit der Verwendung von Semaphoren herum, aber ich stoße immer wieder auf Warnhinweise für nicht definierte Referenzen, wodurch mein Code nicht funktioniert. Ich habe Beispielcode aus einem Text gezogen, hatte aber Probleme mit einigen ihrer Syntax, also ging ich zum POSIX-Semaphor-Tutorial und änderte die Dinge auf ihre Syntax um und bekam als Ergebnis diese Referenzfehler.

Ich kann einfach etwas übersehen, aber ich kann es nicht finden.

Fehler:

%Vor%

Was ich habe (Es mag ein wenig hässlich aussehen, weil ich die Dinge aus meiner alten Methode kommentiert habe). Ich weiß auch, dass meine Methode zum Hinzufügen nicht funktioniert, aber ich werde dazu kommen, wenn ich meine Syntaxprobleme behebe :

%Vor%     
TheFatness 09.05.2014, 03:16
quelle

2 Antworten

17

Wenn Sie sich auf einem Linux-System befinden, müssen Sie das Flag -pthread kompilieren und verknüpfen, um die pthreads-Bibliothek zu verknüpfen.

%Vor%

Wie Paul Griffiths darauf hingewiesen hat, können Sie auch -lrt verwenden, das portabler ist und die POSIX Realtime Extensions-Bibliothek verknüpft

%Vor%
  • int main(void) nicht void main()
  • typedef int semaphore ist falsch, sem_t sollte als undurchsichtiger Typ behandelt werden, Sie verwenden diesen typedef niemals in Ihrem Code.
  • Ein Problem, das ich vorhersehe, ist, dass Ihr consumer -Code die Semaphore vor der Initialisierung in producer verwendet. Du solltest sie in deinem main initialisieren
Ryan Haining 09.05.2014 03:24
quelle
2

Habe denselben Fehler in Ubuntu qt. Nach dem Hinzufügen von

  

LIBS + = -lpthread -lrt

zur project.pro-Datei, die alle kompiliert wurde.

    
Alexey 16.01.2017 11:03
quelle