pbp Δημοσ. 17 Ιουνίου 2011 Δημοσ. 17 Ιουνίου 2011 Γεια σας, Έχω βρει μια βιβλιοθήκη στη C που έχει κάποιες συναρτήσεις που μου χρειάζονται (έχω μόνο το ".h" και το ".o" αρχείο... Για να την συνδέσω με το πρόγραμμα μου ώστε να μπορέσω να χρησιμοποιήσω τις συναρτήσεις της κάνω #include"vivliothiki.h" και πάω project options --> parameters και στο linker προσθέτω το .o αρχείο... Ύστερα, κάνω compile και μου βγάζει [Linker error]. (Έχω μεταφέρει και όλα τα σχετικά αρχεία του project σε ένα κοινό φάκελο) Κάνω κάτι λάθος? μπορεί να βοηθήσει κανείς ? Ευχαριστώ!
parsifal Δημοσ. 17 Ιουνίου 2011 Δημοσ. 17 Ιουνίου 2011 "Dev-C++" σημαίνει πως δουλεύεις σε περιβάλλον Windows. Μήπως το .o αρχείο που έχεις είναι για άλλο λειτουργικό, π.χ. Linux;
pbp Δημοσ. 17 Ιουνίου 2011 Μέλος Δημοσ. 17 Ιουνίου 2011 "Dev-C++" σημαίνει πως δουλεύεις σε περιβάλλον Windows. Μήπως το .o αρχείο που έχεις είναι για άλλο λειτουργικό, π.χ. Linux; Υπάρχει τρόπος να καταλάβω αν είναι για Linux ? Αν και δεν νομίζω να είναι δηλαδή... Την διαδικασία παραπάνω σωστά την κάνω? Δεν θέλει τίποτα άλλο ε ?
firewalker Δημοσ. 17 Ιουνίου 2011 Δημοσ. 17 Ιουνίου 2011 Μήπως είναι από gcc σε Windows; Ή τον gcc χρησιμοποιεί το Dev-C++;
parsifal Δημοσ. 17 Ιουνίου 2011 Δημοσ. 17 Ιουνίου 2011 Την διαδικασία παραπάνω σωστά την κάνω? Δεν θέλει τίποτα άλλο ε ? Σωστά την κάνεις, το δοκίμασα μόλις με ένα minimal παράδειγμα: > /* mylib.h */ int calculate(int); > /* mylib.c */ #include "mylib.h" int calculate(int number) { return (number + 5) / 2; } > /* main.c */ #include <stdio.h> #include "mylib.h" int main(void) { int number; printf("Give me a number and I will perform a secret calculation on it!\n"); scanf("%d", &number); printf("\nCalculation complete! Result: %d\n", calculate(number)); return 0; } ...και δουλεύει σωστά. Πρέπει όμως να είσαι σίγουρος πως ο object code της βιβλιοθήκης που διαθέτεις (το .o αρχείο δηλαδή) έχει γίνει compile σε Windows (ή αν έχει γίνει σε άλλο λειτουργικό, αυτό να είναι cross-compiling που να οδηγεί σε Win32 binary) και με compiler που να δίνει αποτέλεσμα συμβατό με τον compiler και linker που τρέχει από κάτω το Dev-C++ (τα οποία είναι ένα μεγάλης ηλικίας Win32 port του GCC). Εκεί που προμηθεύτηκες αυτήν τη βιβλιοθήκη δεν υπάρχουν κάποιες στοιχειώδεις οδηγίες, documentation, κάτι;
pbp Δημοσ. 17 Ιουνίου 2011 Μέλος Δημοσ. 17 Ιουνίου 2011 Έχει σημασία αν είχε γίνει compile σε 32-bit/64-bit? Μπορώ από κάπου να κατεβάσω άλλες βιβλιοθήκες να το δοκιμάσω ? Εκεί που προμηθεύτηκες αυτήν τη βιβλιοθήκη δεν υπάρχουν κάποιες στοιχειώδεις οδηγίες, documentation, κάτι; Καθηγητής μου την έδωσε... Για αυτό και δεν νομίζω να είναι για linux και αυτά που λέτε ... Διότι Γνωρίζει ότι δουλεύω σε Dev-C++... (οι μόνες οδηγίες που έχει είναι στο .h για το τι κάνει η κάθε συνάρτηση)
parsifal Δημοσ. 17 Ιουνίου 2011 Δημοσ. 17 Ιουνίου 2011 Έχει σημασία αν είχε γίνει compile σε 32-bit/64-bit? Βεβαίως, και αυτό έχει σημασία. Μπορώ από κάπου να κατεβάσω άλλες βιβλιοθήκες να το δοκιμάσω ? Δοκίμασε με το παράδειγμα που έδωσα πιο πάνω μέσα σε spoiler. Ορίστε και το .o αρχείο που παράγει ο compiler του Dev-C++ (συν τον πηγαίο κώδικα): . example.zip
pbp Δημοσ. 17 Ιουνίου 2011 Μέλος Δημοσ. 17 Ιουνίου 2011 Βεβαίως, και αυτό έχει σημασία. Δοκίμασε με το παράδειγμα που έδωσα πιο πάνω μέσα σε spoiler. Ορίστε και το .o αρχείο που παράγει ο compiler του Dev-C++ (συν τον πηγαίο κώδικα): . Αυτό που μου έστειλες δουλεύει. Έχω μια απορία όμως... Δουλεύει σε C αλλα δοκίμασα να το κάνω και σε C++ και δεν δουλεύει.. Γιατί ? Αφού η C είναι υποσύνολο της C++.
parsifal Δημοσ. 17 Ιουνίου 2011 Δημοσ. 17 Ιουνίου 2011 Δεν είναι τόσο απλό: How to mix C and C++ από το C++ FAQ.
G-hamsteR Δημοσ. 20 Ιουνίου 2011 Δημοσ. 20 Ιουνίου 2011 Φίλε έχω την εντύπωση πως τα '.ο' αρχεία είναι των Linux.
parsifal Δημοσ. 20 Ιουνίου 2011 Δημοσ. 20 Ιουνίου 2011 Φίλε έχω την εντύπωση πως τα '.ο' αρχεία είναι των Linux. Όχι αποκλειστικά. Για παράδειγμα, το Dev-C++ που αναφέρει ο φίλος και είναι Windows software, παράγει (έστω, ο compiler που τρέχει από κάτω) .o αρχεία.
migf1 Δημοσ. 20 Ιουνίου 2011 Δημοσ. 20 Ιουνίου 2011 Είναι compiler specific (π.χ. ο gcc τα ονομάζει .o, η pelles-c .obj, κλπ). Θα πρέπει ο καθηγητής σου να σου πει με ποιον compiler έκανε compile τον κώδικα, ποια έκδοση και σε ποια πλατφόρμα.
firewalker Δημοσ. 21 Ιουνίου 2011 Δημοσ. 21 Ιουνίου 2011 Το Code::Blocks δεν είναι compiler. Τον gcc (mingw για win) χρησιμοποιεί στο παρασκήνιο.
parsifal Δημοσ. 21 Ιουνίου 2011 Δημοσ. 21 Ιουνίου 2011 Τον gcc (mingw για win)... MinGW (GCC για Win)...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.