C++ ,Stand Alone Εφαρμογή
- ailouros
- Gbyte level
- Posts: 1041
- Joined: Fri Apr 30, 2004 4:36 pm
- Academic status: Alumnus/a
- Contact:
C++ ,Stand Alone Εφαρμογή
Θέλω να δημιουργήσω μια εφαρμογή (exe αρχείο),συγκεκριμένα στο Visual Studio 6 ,η οποία να τρέχει σε οποιαδήποτε πλατφόρμα.Κυρίως με ενδιαφέρει να τρέχει σε μηχανάκια που δεν έχουν βιβλιοθήκες c/c++ χωρίς να τους ζητάει dll και διάφορα άλλα. 
- mikem4600
- Gbyte level
- Posts: 1363
- Joined: Fri Mar 12, 2004 2:00 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: A Galaxy Far, Far Away
- Contact:
Θεωρητικά μόνο με χρήση του Wine θα μπορεί να τρέξει μία τέτοια εφαρμογή κάτω από Linux. Δοκόμασε Java ή .NET (δες το Mono project για cross-platform .NET).
Autocracy hates questions. Anarchy hates answers.
- ailouros
- Gbyte level
- Posts: 1041
- Joined: Fri Apr 30, 2004 4:36 pm
- Academic status: Alumnus/a
- Contact:
Κυρίως με ενδιαφέρει για windows.Έχω δηλαδή την εντύπωση ότι αν κάποιο αρχείο .exe το οποίο θα έχει παραχθεί από κώδικα C++ κάτω από Visual Studio 6 ,αν πάει να εκτελεστεί σε pc το οποίο δεν έχει εγκατεστημένο το Visual Studio η κάποιον άλλο compiler της γλώσσας ,τότε δεν θα είναι δυνατή η εκτέλεσή του και θα ζητήσει κάποια dll αρχεία.Μπορεί να κάνω και λάθος βέβαια.(αλλά όλοι οι φίλοι μου είναι hardcore προγραμματιστές και έτσι δεν μπορώ να βρώ έναν "παρθένο υπολογιστή για να το δοκιμάσω<---black humour).
Π.χ για έναν υπολογιστή που έχει το cygwin ,δοκίμασα να τρέξω ένα .exe που χρησιμοποιόυσε βιβλιοθήκες opengl ,και ζήτησε το glut32.dll,για να εκτελεστεί.
Ευχαριστώ mikem θα κοιτάξω και αυτά που μου έδωσες ,φαίνονται κουλ
Π.χ για έναν υπολογιστή που έχει το cygwin ,δοκίμασα να τρέξω ένα .exe που χρησιμοποιόυσε βιβλιοθήκες opengl ,και ζήτησε το glut32.dll,για να εκτελεστεί.
Ευχαριστώ mikem θα κοιτάξω και αυτά που μου έδωσες ,φαίνονται κουλ

Γιατί δεν κάνεις static compile ? Το τελικό μέγεθος της εφαρμογής θα μεγαλώσει αρκετά αλλά θα πετύχεις τον σκοπό σου.
Από την άλλη το παράδειγμα που δώθηκε με το glut32.dll είναι λίγο ακραίο.
Αυτό που θέλω να πώ είναι ότι αν φτιάξεις μια εφαρμογή σε Windows με την βοήθεια του Visual Studio και αν δεν χρειαστείς κατά την υλοποίηση κάποιο library (δηλαδή χρησιμοποιώντας default libraries των Windows) τότε δεν θα προκύψει κάποιο πρόβλημα. Τα Windows έχουν απο default εγκατάσταση σχεδόν όλα τα libraries που έχουν χρησιμοποιηθεί κατα καιρούς (εκτός από αυτά της Borland ίσως). Γι'αυτό ο κατάλογος των Windows είναι σχεδόν 1GB αμέσως μετά από απλή εγκατάσταση . Μόνο το .NET που είναι σχετικά καινούριο framework δεν περιέχεται σε μια default εγκατάσταση (υπάρχει μόνο μετά την εγκατάσταση Service Pack ή .NET Framework). Άλλωστε το glut32 δεν έχει σχέση με την ύπαρξη ή όχι του cygwin κατί που περιέργως αναφέρεται και από εσένα τον ίδιο.
Από την άλλη το παράδειγμα που δώθηκε με το glut32.dll είναι λίγο ακραίο.
Αυτό που θέλω να πώ είναι ότι αν φτιάξεις μια εφαρμογή σε Windows με την βοήθεια του Visual Studio και αν δεν χρειαστείς κατά την υλοποίηση κάποιο library (δηλαδή χρησιμοποιώντας default libraries των Windows) τότε δεν θα προκύψει κάποιο πρόβλημα. Τα Windows έχουν απο default εγκατάσταση σχεδόν όλα τα libraries που έχουν χρησιμοποιηθεί κατα καιρούς (εκτός από αυτά της Borland ίσως). Γι'αυτό ο κατάλογος των Windows είναι σχεδόν 1GB αμέσως μετά από απλή εγκατάσταση . Μόνο το .NET που είναι σχετικά καινούριο framework δεν περιέχεται σε μια default εγκατάσταση (υπάρχει μόνο μετά την εγκατάσταση Service Pack ή .NET Framework). Άλλωστε το glut32 δεν έχει σχέση με την ύπαρξη ή όχι του cygwin κατί που περιέργως αναφέρεται και από εσένα τον ίδιο.
- ailouros
- Gbyte level
- Posts: 1041
- Joined: Fri Apr 30, 2004 4:36 pm
- Academic status: Alumnus/a
- Contact:
Το static compile γίνεται αν επιλέξω στις ρυθμίσεις του project ,Use Microsoft Foundation Classes in a Static Library ή με κάποιον άλλο τρόπο;Επίσης το debug με το release τι διαφορετικό έχουν;
(Για το παράδειγμα που ανέφερα ήταν απλώς μια περίπτωση την οποία είχα αποτύχει να περιγράψω γλαφυρά στο πρώτο ποστ [όπου δηλαδή ζητούσε κάποια dll],το cygwin μπήκε ως επιπλέον περιττή πληροφορία και σε καμια περίπτωση δεν με εκφράζει
)
(Για το παράδειγμα που ανέφερα ήταν απλώς μια περίπτωση την οποία είχα αποτύχει να περιγράψω γλαφυρά στο πρώτο ποστ [όπου δηλαδή ζητούσε κάποια dll],το cygwin μπήκε ως επιπλέον περιττή πληροφορία και σε καμια περίπτωση δεν με εκφράζει


- mikem4600
- Gbyte level
- Posts: 1363
- Joined: Fri Mar 12, 2004 2:00 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: A Galaxy Far, Far Away
- Contact:
Ναι, έτσι γίνεται, αλλά αναφέρεται στο MFC μόνο. Αν δεν το χρησιμοποιείς (π.χ. παίζεις με ATL/WFC κτλ.) δεν έχει νόημα.ailouros wrote:Το static compile γίνεται αν επιλέξω στις ρυθμίσεις του project ,Use Microsoft Foundation Classes in a Static Library ή με κάποιον άλλο τρόπο;
Release compile κάνεις όταν έχεις τελειώσει το project και θες να το "μοιράσεις" σε κόσμο. Το εκτελέσιμο έχει μικρότερο μέγεθός και ο κώδικάς του εκτελείται γρηγορότερα (και γίνονται και optimizations). Debug compile κάνεις όταν αναπτύσεις την εφαρμογή και θες π.χ. να μπορείς να βάζεις breakepoints και να σταματάει το IDE στο σημείο του κώδικα C++ που είναι το breakpoint (στην release έκδοση θα σου δείχνει απλώς disassembly, που δεν είναι ό,τι πιο χρήσιμο)... Το εκτελέσιμο όμως είναι μεγαλύτερο και πιο αργό στην εκτέλεση (γιατί περιλαμβάνει debug symbols και συνήθως δεν γίνονται optimizations).ailouros wrote:Επίσης το debug με το release τι διαφορετικό έχουν;
Autocracy hates questions. Anarchy hates answers.
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Δοκίμασε να κάνεις αυτό που αναφέρει ο Μηνάς. Απλά θα πρέπει να βάλεις τις κοινόχρηστες βιβλιοθήκες μαζί. Βέβαια αυτό εάν είναι ένα - δύο dll και μόνο γιατί για παραπάνω δεν παίζει θα χρειαστείς να φτιάξεις έναν μικρό installer ώστε να περνάει τα dlls στο target σύστημα.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie