Boost.Thread und CodeBlocks zum laufen bringen.
-
Hallo,
ich bin nach einiger Zeit googlen, testen, googlen, testen so langsam am verzweifeln. Ich versuche momentan die Boost Libary in Codeblocks einzubinden um die Thread-Klasse zu benutzen. Nur muss man das, soweit ich weiß, noch selber bauen (gibts da einen anderen deutschen begriff für "build"?). Und da scheitere ich absolut.Soweit verstanden habe ich, dass man die toolchain angeben muss, damit der Builder von dem Package von der Boost Libary das richtig erzeugt. Aber weiter als "Reference unknown" komm ich nicht.

Bitte um Hilfe, danke

-
Threads gibts auch in der Standardbibliothek. Du musst dafür allerdings einen aktuellen Compiler haben, der C++11 unterstützt.
-
Siehe hier, runterscrollen bis Boost.
Du kannst dir eine vorkompilierte Version von Boost mit entsprechendem Compiler (bspw. GCC 4.7.1) downloaden, falls es dir zu viel ist, das ganze selber zu kompilieren.Allerdings kannst du mit einer so aktuellen GCC-Version gleich, wie Nexus schon angedeutet hat, die Standardbibliotheks-Version benutzten, das würde ich dir auch raten.
-
Hab schon gesehen, dass die neue C++-Version ne thread-Klasse in der STL hat, aber ich bin (wie man sieht) recht ungeschickt mit Compiler-Installationen und so weiter.
Deshalb ist es für mich wahrschienlich der selbe aufwand, den Compiler einzurichten oder die Boost-Libary zu installieren.

Aber mit dem Link kann ich ja dann beides mit einem schlag erledigen.
Danke.Ich melde mich, ob es geklappt hat.
-
Compiler einrichten? Codeblocks bringt nen aktuellen GCC mit, der kann das "einfach so".
#include <thread>und los ...
Welches Betriebssystem nutzt du eigentlich? Falls nicht Windows bringt dir der Link nix.
-
Windows.
Also ich habs nochmal mit CodeBlocks versucht. Aktuelle MinGW 4.7.1 und nischt da. Habe gelesen, dass die normale Version von MinGW das auch net packt, also hab ich versucht, es mit einer anderen Version zum laufen zu bringen aber es funktioniert nicht... Ich hoffe, einer unserer Dozenten kommt noch auf die Idee, uns bei zu bringen, wie man seine Compiler verwaltet u.s.w.
Könnt ihr mir nochmal weiterhelfen? Gibt es eine Lösung für unbeholfene Informatik-erstsemestler?
Danke im Voraus.

-
Hallo, ich muss den Thread nochmal Pushen. Hab über die Feiertage net nochmal einen Versuch gestartet. Jetzt wollte ich aber doch nochmal C++ mit Thread zum laufen bringen. Kann mir jemand verraten, welche IDE das macht bzw was man machen muss um C++11 zum laufen zu bringen? Ich stell mich gerade recht dumm an.

Danke

-
Die IDE ist viel unwichtiger als der eigentliche Compiler.
Du musst dir einen sehr aktuellen Compiler holen, ich bspw. empfehle GCC 4.7.2.
-
Ha
Hat funktioniert. Nach langem hin und her wollte Codeblocks jedoch -std=c++0x und net -std=c++11 hören.Jedoch stürzt bei mir jetzt das Programm ab. Hier mal der simple Quelltext. Soll eine Fakultät berechnet werden.

#include <iostream> #include <thread> using namespace std; void fak(int numb) { cout << "Thread created" << endl; int result = 1; for(int i = 1; i <= numb; i++) { result = result*i; } cout << "Result = " << result << endl; cout << "Thread is done" << endl; } int main() { thread t1(fak,5); t1.join(); return 0; }Danke im Voraus

-
Was sagt der Debugger? Versuch mal Exceptions abzufangen.
-
Was soll ich da genau machen? also irgendwas mit try und catch?
Hier, das gibt die Konsole so aus:
-
Morgen.

Muss den Thread leider mal pushen, bin immer noch nicht weiter.

Grüße
-
Unter Linux lässt sich die Exception durch das Linken von pthread vermeiden. Wenn die libstdc++ Implementierung für Windows ebenso pthread verwendet musst du das auch Linken.
-
Ich studiere im ersten Semester und versuche mir Threads selber beizubringen. Habe bis jezt die basics drauf. Einige in der Praxis noch net gut geübt. Ich kann im groben:
Variablen
Funktionen
Klassen
Referenzen
Zeigerund alles was damit zutun hat. Noch nicht wirklich gut bin ich mit
Tamplates
Vererbung
Virtuelle Funktionen (hießen die so?)
...Soll heißen, ich habe keine Ahnung was man wie wodurch Linken muss. Exceptions sagen mir zwar was, hab aber in der Praxis noch nie was damit zutun gehabt und meinen C++-Schinken (Buch) habe ich gerade nicht zur Hand.

Tut mir wirklich leid wenn ich mich hier n bisschen quer stelle, aber was soll ich machen.

-
Virtuelle Funktionen (hießen die so?)
Ja, auch wenn ich - hier - den Begriff "Methode" statt Funktion verwenden würde, da es hier ja nur um Klassen geht (und das damit suggeriert wird, denn Methode ist in der Informatik ein Synonym für Memberfunktion).
-
ruhig_brauner schrieb:
Ich studiere im ersten Semester und versuche mir Threads selber beizubringen. Habe bis jezt die basics drauf. Einige in der Praxis noch net gut geübt. Ich kann im groben:
Variablen
Funktionen
Klassen
Referenzen
Zeigerund alles was damit zutun hat. Noch nicht wirklich gut bin ich mit
Tamplates
Vererbung
Virtuelle Funktionen (hießen die so?)
...Soll heißen, ich habe keine Ahnung was man wie wodurch Linken muss. Exceptions sagen mir zwar was, hab aber in der Praxis noch nie was damit zutun gehabt und meinen C++-Schinken (Buch) habe ich gerade nicht zur Hand.

Tut mir wirklich leid wenn ich mich hier n bisschen quer stelle, aber was soll ich machen.

Google danach wie du mit deiner IDE eine Bibliothek linkst. Wird eigentlich immer gut erklärt...
-
Sone schrieb:
Methode ist in der Informatik ein Synonym für Memberfunktion
In C++ existiert nur der Begriff Memberfunktion.
-
bigmember schrieb:
Sone schrieb:
Methode ist in der Informatik ein Synonym für Memberfunktion
In C++ existiert nur der Begriff Memberfunktion.
C++ Programming Language Third Edition Seite 310 schrieb:
A virtual member function is sometimes called a method
-
"sometimes" heisst "ganz nett zu wissen, aber besser nicht verwenden"
Sone sagt vielmehr, dass Methode ein Synonym für Memberfunktion ist und suggeriert damit, dass Methoden standardmässig nicht-virtuell sind und dass er "virtuelle Methode" verwenden würde, was dann eine irreführende Tautologie ist (=falsch).
Sone schrieb:
Ja, auch wenn ich - hier - den Begriff "Methode" statt Funktion verwenden würde, da es hier ja nur um Klassen geht (und das damit suggeriert wird, denn Methode ist in der Informatik ein Synonym für Memberfunktion).
-
bigmember schrieb:
"sometimes" heisst "ganz nett zu wissen, aber besser nicht verwenden"
Das ist etwas anderes als
bigmember schrieb:
In C++ existiert nur der Begriff Memberfunktion.