pbp Δημοσ. 14 Νοεμβρίου 2013 Δημοσ. 14 Νοεμβρίου 2013 Γεια σας παιδιά, θα ήθελα τη βοήθειά σας! Μόλις έβαλα gcc και g++ 4.8.1 και θέλω να τρέξω ένα πρόγραμμα με C++11. Το θέμα είναι ότι δεν δουλεύει με τίποτα. Κάνω ένα απλό πρόγραμμα hello World και δεν κάνει compile. με τον gcc όλα δουλεύουν μια χαρά για .c προγράμματα. Με τον g++ κάνει compile και όταν τρέχω το πρόγραμμα (.cpp) το εκτελεί και στο τέλος κρασάρει χωρίς λόγο. Αυτό μου συμβαίνει και σε Windows και σε Ubuntu αντίστοιχα. Υποψιάζεται κανείς τι γίνεται? Έψαξα αρκετά στο Google και προσπάθησα να βάλω flags όπως το -std=c++11 κ.α. Πιο συγκεκριμένα στα windows δεν δούλεψε με τίποτα. Στο linux κατάφερα μέσω terminal να το τρέξω προσθέτοντας το flag -lstdc++ αλλά με Eclipse καμία τύχη. Please Help! Στα windows έχω εγκαταστήσει την τελευταία έκδοση minGW.
bnvdarklord Δημοσ. 14 Νοεμβρίου 2013 Δημοσ. 14 Νοεμβρίου 2013 Εδω θα δεις τα features της C++11 που υποστηρίζει ο g++ 4.8 http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
pbp Δημοσ. 14 Νοεμβρίου 2013 Μέλος Δημοσ. 14 Νοεμβρίου 2013 Ευχαριστώ αλλά δεν έβγαλα άκρη σχετικά μ αυτο που θέλω :/Κάποιος άλλος?
cyberrobot Δημοσ. 14 Νοεμβρίου 2013 Δημοσ. 14 Νοεμβρίου 2013 Μπορείς να παραθέσεις τον κώδικα και την εντολή που κάνεις compile, θα βοηθούσε.
pbp Δημοσ. 14 Νοεμβρίου 2013 Μέλος Δημοσ. 14 Νοεμβρίου 2013 Ο κώδικας είναι ο κλασικός για ένα απλό Hello World. Στο Windows έτρεξα g++ -O3 main.cpp -o main.exe μέσω cmd και δούλεψε. Στο linux δούλεψε με g++ main.cpp -lstdc++ μέσω terminal. To eclipse εξακολουθεί να μη μου δουλέυει ενώ έχω βάλει τα flags στις ρυθμίσεις :/ Επιπλέον θέλω να τρέξω προγράμματα με την βιβλιοθήκη pthreads.Εκτός απο το να προσθέσω το flag -std=c++11 και -pthread που πρέπει να βάλω το αρχείο που κατεβάζω απο Site: εδώ ?
bnvdarklord Δημοσ. 14 Νοεμβρίου 2013 Δημοσ. 14 Νοεμβρίου 2013 (επεξεργασμένο) Το απλό Hello World δεν νομίζω να είναι C++11 only. Κάτι αλλο κανεις λάθος. Τι errors σου βγάζει; Επεξ/σία 15 Νοεμβρίου 2013 από bnvdarklord
moukoublen Δημοσ. 14 Νοεμβρίου 2013 Δημοσ. 14 Νοεμβρίου 2013 Στα windows οι mingw compilers ειναι στο PATH; Και όπως είπε ο bnvdarklord γράψε τα errors που σου βγάζει το eclipse.
pbp Δημοσ. 14 Νοεμβρίου 2013 Μέλος Δημοσ. 14 Νοεμβρίου 2013 Ναι τα έχω προσθέσει τα paths! C:\MinGW\bin; και C:\MinGW\msys\1.0\bin; Στο Linux έκανα επανεγκατάσταση του gcc & g++ και δουλεύει μια χαρά! Το θέμα μου τώρα είναι ότι ενώ τρέχει το πρόγραμμα το Eclipse μου υπογραμμίζει ότι εντολή έχει να κάνει με threads λέγοντας "_ could not be resolved" Μπορώ να κάνω κάτι για αυτό (εκτος απο το να βάλω το Eclipse να μη με ειδοποιεί για Semantic λάθη ) Ορίστε και τι εννοώ:
cyberrobot Δημοσ. 14 Νοεμβρίου 2013 Δημοσ. 14 Νοεμβρίου 2013 ααααα ε λογικό είναι, πρέπει να δηλώσεις την pthread. Πάνε στο πρότζεκτ, settings>builders>linker>add library >"pthread" κάπως έτσι τέσπα για να βγάλει το "-lpthread". εδώ http://imageshack.us/a/img33/8199/6tb0.png
pbp Δημοσ. 15 Νοεμβρίου 2013 Μέλος Δημοσ. 15 Νοεμβρίου 2013 Το έχω κάνει αυτό το φίλε μου, αυτό ειναι το περίεργο :/ -----------------edit---------------------------------------------------------------------------- αυτό που παρατηρώ είναι ότι μπορώ να τρέξω σε C αλλά όχι σε C++ Δηλαδή αυτό τρέχει: #include <iostream> #include <pthread.h> using namespace std; #if defined(__cplusplus) extern "C" #endif void *print_message(void*) { cout << "Threading\n"; } int main() { pthread_t t1; pthread_create(&t1, NULL, &print_message, NULL); cout << "Hello"; void* result; pthread_join(t1,&result); return 0; } αυτό επίσης τρέχει αλλά μου κοκκινίζει ότι έχει να κάνει με threads μέσα στη main : #include <iostream> #include <thread> using namespace std; void hello(){ cout<<"Hello Thread"<<endl; } int main() { thread a(hello); a.join(); thread b(hello); b.join(); cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!! return 0; }
migf1 Δημοσ. 15 Νοεμβρίου 2013 Δημοσ. 15 Νοεμβρίου 2013 H pthread είναι POSIX specific, κι από ότι θυμάμαι ο mingw δεν παρέχει Windows port. Μπορείς όμως να δοκιμάσεις την pthread-win32 (διάβασε πρώτα τους περιορισμούς της). Βεβαιώσου επίσης πως το -lpthread είναι το τελευταίο command-line flag.
pbp Δημοσ. 15 Νοεμβρίου 2013 Μέλος Δημοσ. 15 Νοεμβρίου 2013 Με λόγια αυτό που γίνεται τώρα είναι ότι μπορώ να κάνω compile πρόγραμμα με threads του c++11 standard αλλά το Eclipse μου υπογραμμίζει κάθε εντολή αυτού του lib
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα