Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

07.09.2013, 13:00

Boost/Thread undefined reference to thread in boost::

Hey Leute

Habe ein riesen problem.

Habe eben mal versucht boost bei CodeBlocks einzubinden, das funktioniert aber nicht richtig.

Habe es schon zum laufen gebracht bekommen, allerdings spuckt er mir dann einen Laufzeitfehler wegen eines smart pointers aus.

Fehler ohne die libs einzeln einzutragen:
undefined reference to boost::thread,join,~thread u.s.w


Habe bei zusätzlichen linker optionen auch schon das reingetan
-lpthread


Funktioniert aber leider auch nicht

Gruß Leri

2

07.09.2013, 13:18

habe auch gerade versucht, #include<thread> ganz normal einzubinden, weils da anscheinend auch in der std namespace was gibt, da sagt er mir, das es keinen member namens thread gibt in std

3

07.09.2013, 13:54

Also zunächst einmal musst du unterscheiden zwischen den Threads vom Standard(C++11(#include <thread>)) und den Threads von boost, die nichts mit dem Standard zu tun haben(außer, dass sie meistens Vorbild für den Standard sind ;)).Um dir jetzt sagen zu können, worin dein Fehler liegt, brauchen wir einen Ausschnitt aus deinem Quellcode.Sollte dein Compiler C++11 NICHT unterstützen, dann werden nur die Threads von Boost laufen.Aber wie gesagt, für Fehleranalyse brauchen wir Code.

4

07.09.2013, 14:08

so also das ist mein quellcode ( programmiere unter code blocks)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<boost/thread.hpp>
#include<iostream>
using namespace std;
void test(int i);
int main()
{
boost::thread t1(test,1);
t1.join();
return 0;
}
void test(int i)
{
cout << "Thread"<< endl;
}

5

07.09.2013, 14:38

boost::thread ist keine Header-only Bibliothek. Hast du sie kompiliert und gelinkt?
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

07.09.2013, 14:55

Nachdem es mittlerweile std::thread gibt, würd ich eher das verwenden als die boost Threads. Was deinen Fehler betrifft, hat Steef dir ja schon die Antwort gegeben...

7

07.09.2013, 14:59

also der ordner boost ist mit include gelinkt und die libs sind auch gelinkt, aber trotzdem tritt der fehler auf

was meinst du mit ob ich die kompiliert habe? muss ich bei boost erstmal etwas kompilieren?

^^ falls ja, dann wäre das was?^^


wo bekomme ich denn dann std::thread her? mein kompiler meckert wenn ich über std auf thread zugreifen will, und sagt das es halt kein element namens thread gibt in std

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

07.09.2013, 15:01

also der ordner boost ist mit include gelinkt und die libs sind auch gelinkt, aber trotzdem tritt der fehler auf

Wenn die richtigen libs gelinked wären, würde der Fehler nicht kommen.

was meinst du mit ob ich die kompiliert habe? muss ich bei boost erstmal etwas kompilieren?

Ja klar, außer du hast die passenden, fertig gebauten Libraries von irgendwo her...

9

07.09.2013, 15:05

ich hab die boost einfach von der cd (der C++ Programmierer)

Allerdings, erklärt er da nicht, das ich die irgendwie kompilieren muss
Wie gesagt, ich habe nur versucht mein programm zu kompilieren und er tuts nicht, wegen undefinierter referenzen.

Aber ist eigentlich alles gelinkt was er braucht, oder wo finde ich die richtige lib für boost thread?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

07.09.2013, 15:14

Aber ist eigentlich alles gelinkt was er braucht [...]

Offensichtlich nicht...

[...] oder wo finde ich die richtige lib für boost thread?

Weiß nicht, du kannst dir z.B. die aktuelle Version von boost runterladen und selbst kompilieren. Passen diese libs, die du da hast, zur Version deines Compilers? Wie siehts mit 64 vs. 32 Bit aus...

Werbeanzeige