kagelos Δημοσ. 2 Ιουνίου 2012 Δημοσ. 2 Ιουνίου 2012 Χρειάζομαι την βιβλιοθήκη jpeg σε 64 bit έκδοση. Κατέβασα τον κώδικα από εδώ : http://www.ijg.org/ και το έκανα compile με το Visual Studio ως εξής : μετονόμασα το makefile.vc σε makefile μετονόμασα το jinclude.vc σε jinclude.h άνοιξα το visual studio command prompt και έδωσα nmake clean all Το θέμα είναι πως αυτό βγάζει 32bit έκδοση. Τι κάνω για να του αλλάξω το target machine;
migf1 Δημοσ. 2 Ιουνίου 2012 Δημοσ. 2 Ιουνίου 2012 Δεν χρησιμοποιώ Visual Studio αλλά με ένα πρόχειρο googling βρήκα αυτό: http://msdn.microsof...v=vs.80%29.aspx Δηλαδή δίνεις στη γραμμή εντολών του linker μια από τις 2 ακόλουθες εντολές... > /MACHINE:X64 ή /MACHINE:IA64
kagelos Δημοσ. 2 Ιουνίου 2012 Μέλος Δημοσ. 2 Ιουνίου 2012 Το έκανα αυτό στην αρχή, αλλά μου έλεγε πως τα .obj που πάει να κάνει link έχουν άλλο architecture. Τελικά έπρεπε να φορτώσω το Visual Studio command prompt με x64 flag : %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" amd64 Έπαιξε, έκανε και compile και το άλλο project που είχε dependency στο libjpeg. Μένει τώρα να δω αν τρέχει ...
kagelos Δημοσ. 2 Ιουνίου 2012 Μέλος Δημοσ. 2 Ιουνίου 2012 Λίγο off topic, αλλά αντιμετωπίζω το εξής : Το νέο dll που βγήκε (x64) έχει λίγο περίεργα ονόματα στις συναρτήσεις που κάνει export : >?openslide_open@@YAPEAU_openslide@@PEBD@Z αντί για >openslide_open που είχε το original x86, με αποτέλεσμα να λαμβάνω entry point not found. Στον κώδικα η παραπάνω συνάρτηση π.χ. είναι δηλωμένη ως : >__declspec(dllexport) openslide_t *openslide_open(const char *filename); Τι άλλο θέλει; Btw, Release build κάνω, χωρίς debug info - γιατί κάπου διάβασα πως αν κάνεις debug build, τότε βγάζεις αυτά τα περίεργα name decorations. Αλλά και στο release τα ίδια κάνει! Τελικά ήθελε : extern "C" __declspec(dllexport) τώρα όμως δεν δουλεύει τίποτα ... ποιος ξέρεις τι γίνεται εκεί μέσα! Death by a million dependencies ... αυτή τη φορά τη γλίτωσα!
παπι Δημοσ. 2 Ιουνίου 2012 Δημοσ. 2 Ιουνίου 2012 Κανε κατι τετοιο >#ifdef __cplusplus #define EXTERN_C extern "C" #else #define EXTERN_C extern #endif #ifdef _DLLEXPORTS #define MYAPI EXTERN_C __declspec(dllexport) #else #define MYAPI EXTERN_C __declspec(dllimport) #endif Οταν κανεις build το αυτο βαλε το define _δδλεχπορτσ εδιτ βαλε το μυαπι μπροστα απο ολες της συναρτησεις
kagelos Δημοσ. 2 Ιουνίου 2012 Μέλος Δημοσ. 2 Ιουνίου 2012 Βασικά υπήρχε αυτό : #define OPENSLIDE_PUBLIC() __declspec(dllexport) το οποίο έκανα #define OPENSLIDE_PUBLIC() extern "C" __declspec(dllexport) και το OPENSLIDE_PUBLIC() ήταν ήδη μπροστά από κάθε συνάρτηση (compile προσπαθούσα να κάνω ένα open source project).
παπι Δημοσ. 2 Ιουνίου 2012 Δημοσ. 2 Ιουνίου 2012 Ε τοτε αντι για myapi (στο παραπανω) βαλε το openslide_public()
migf1 Δημοσ. 2 Ιουνίου 2012 Δημοσ. 2 Ιουνίου 2012 ... (compile προσπαθούσα να κάνω ένα open source project). Μια καλή ιδέα για τέτοιες περιπτώσεις είναι να στήσεις κι ένα mingw στο μηχανάκι σου. Είτε σκέτο (προσωπικά το προτιμώ) είτε μέσω κάποιου IDE (π.χ. code::blocks) είτε πακεταρισμένο (π.χ. tdm-gcc: http://tdm-gcc.tdragon.net/, δίνω link γιατί παίζει πολύ τελευταία, αν και προσωπικά δεν το έχω δοκιμάσει ακόμα).
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα