Προς το περιεχόμενο

C - Πρόβλημα με σύνδεση βιβλιοθήκης στη main [Dev-C++]


pbp

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας,

Έχω βρει μια βιβλιοθήκη στη C που έχει κάποιες συναρτήσεις που μου χρειάζονται (έχω μόνο το ".h" και το ".o" αρχείο...

Για να την συνδέσω με το πρόγραμμα μου ώστε να μπορέσω να χρησιμοποιήσω τις συναρτήσεις της κάνω #include"vivliothiki.h" και πάω project options --> parameters και στο linker προσθέτω το .o αρχείο...

Ύστερα, κάνω compile και μου βγάζει [Linker error].

(Έχω μεταφέρει και όλα τα σχετικά αρχεία του project σε ένα κοινό φάκελο)

Κάνω κάτι λάθος? μπορεί να βοηθήσει κανείς ? Ευχαριστώ!

Δημοσ.

"Dev-C++" σημαίνει πως δουλεύεις σε περιβάλλον Windows. Μήπως το .o αρχείο που έχεις είναι για άλλο λειτουργικό, π.χ. Linux;

Δημοσ.

"Dev-C++" σημαίνει πως δουλεύεις σε περιβάλλον Windows. Μήπως το .o αρχείο που έχεις είναι για άλλο λειτουργικό, π.χ. Linux;

 

Υπάρχει τρόπος να καταλάβω αν είναι για Linux ?

Αν και δεν νομίζω να είναι δηλαδή...

Την διαδικασία παραπάνω σωστά την κάνω? Δεν θέλει τίποτα άλλο ε ?

Δημοσ.

Την διαδικασία παραπάνω σωστά την κάνω? Δεν θέλει τίποτα άλλο ε ?

Σωστά την κάνεις, το δοκίμασα μόλις με ένα 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, κάτι;

Δημοσ.

Έχει σημασία αν είχε γίνει compile σε 32-bit/64-bit?

Μπορώ από κάπου να κατεβάσω άλλες βιβλιοθήκες να το δοκιμάσω ?

 

Εκεί που προμηθεύτηκες αυτήν τη βιβλιοθήκη δεν υπάρχουν κάποιες στοιχειώδεις οδηγίες, documentation, κάτι;

 

Καθηγητής μου την έδωσε...

Για αυτό και δεν νομίζω να είναι για linux και αυτά που λέτε ...

Διότι Γνωρίζει ότι δουλεύω σε Dev-C++...

(οι μόνες οδηγίες που έχει είναι στο .h για το τι κάνει η κάθε συνάρτηση)

Δημοσ.

Έχει σημασία αν είχε γίνει compile σε 32-bit/64-bit?

Βεβαίως, και αυτό έχει σημασία.

 

 

Μπορώ από κάπου να κατεβάσω άλλες βιβλιοθήκες να το δοκιμάσω ?

Δοκίμασε με το παράδειγμα που έδωσα πιο πάνω μέσα σε spoiler. Ορίστε και το .o αρχείο που παράγει ο compiler του Dev-C++ (συν τον πηγαίο κώδικα):

 

.

example.zip

Δημοσ.

Βεβαίως, και αυτό έχει σημασία.

 

 

 

Δοκίμασε με το παράδειγμα που έδωσα πιο πάνω μέσα σε spoiler. Ορίστε και το .o αρχείο που παράγει ο compiler του Dev-C++ (συν τον πηγαίο κώδικα):

 

.

 

Αυτό που μου έστειλες δουλεύει.

Έχω μια απορία όμως...

Δουλεύει σε C αλλα δοκίμασα να το κάνω και σε C++ και δεν δουλεύει..

Γιατί ? Αφού η C είναι υποσύνολο της C++.

Δημοσ.

Φίλε έχω την εντύπωση πως τα '.ο' αρχεία είναι των Linux.

Όχι αποκλειστικά. Για παράδειγμα, το Dev-C++ που αναφέρει ο φίλος και είναι Windows software, παράγει (έστω, ο compiler που τρέχει από κάτω) .o αρχεία.

Δημοσ.

Είναι compiler specific (π.χ. ο gcc τα ονομάζει .o, η pelles-c .obj, κλπ). Θα πρέπει ο καθηγητής σου να σου πει με ποιον compiler έκανε compile τον κώδικα, ποια έκδοση και σε ποια πλατφόρμα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...