C++ ,Stand Alone Εφαρμογή

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
ailouros
Gbyte level
Gbyte level
Posts: 1041
Joined: Fri Apr 30, 2004 4:36 pm
Academic status: Alumnus/a
Contact:

C++ ,Stand Alone Εφαρμογή

Post by ailouros » Tue Nov 30, 2004 1:53 am

Θέλω να δημιουργήσω μια εφαρμογή (exe αρχείο),συγκεκριμένα στο Visual Studio 6 ,η οποία να τρέχει σε οποιαδήποτε πλατφόρμα.Κυρίως με ενδιαφέρει να τρέχει σε μηχανάκια που δεν έχουν βιβλιοθήκες c/c++ χωρίς να τους ζητάει dll και διάφορα άλλα. :smile:
User avatar
silegav
Venus Project Founder
Venus Project Founder
Posts: 2098
Joined: Tue Mar 09, 2004 4:03 pm
Academic status: Alumnus/a
Location: The Center of the World -> Piraeus

Post by silegav » Tue Nov 30, 2004 2:37 pm

Φτιάχτην σε java!!!! :-)
User avatar
mikem4600
Gbyte level
Gbyte level
Posts: 1363
Joined: Fri Mar 12, 2004 2:00 pm
Academic status: Alumnus/a
Gender:
Location: A Galaxy Far, Far Away
Contact:

Post by mikem4600 » Tue Nov 30, 2004 7:03 pm

Θεωρητικά μόνο με χρήση του Wine θα μπορεί να τρέξει μία τέτοια εφαρμογή κάτω από Linux. Δοκόμασε Java ή .NET (δες το Mono project για cross-platform .NET).
Autocracy hates questions. Anarchy hates answers.
User avatar
ailouros
Gbyte level
Gbyte level
Posts: 1041
Joined: Fri Apr 30, 2004 4:36 pm
Academic status: Alumnus/a
Contact:

Post by ailouros » Tue Nov 30, 2004 8:36 pm

Κυρίως με ενδιαφέρει για windows.Έχω δηλαδή την εντύπωση ότι αν κάποιο αρχείο .exe το οποίο θα έχει παραχθεί από κώδικα C++ κάτω από Visual Studio 6 ,αν πάει να εκτελεστεί σε pc το οποίο δεν έχει εγκατεστημένο το Visual Studio η κάποιον άλλο compiler της γλώσσας ,τότε δεν θα είναι δυνατή η εκτέλεσή του και θα ζητήσει κάποια dll αρχεία.Μπορεί να κάνω και λάθος βέβαια.(αλλά όλοι οι φίλοι μου είναι hardcore προγραμματιστές και έτσι δεν μπορώ να βρώ έναν "παρθένο υπολογιστή για να το δοκιμάσω<---black humour).
Π.χ για έναν υπολογιστή που έχει το cygwin ,δοκίμασα να τρέξω ένα .exe που χρησιμοποιόυσε βιβλιοθήκες opengl ,και ζήτησε το glut32.dll,για να εκτελεστεί.
Ευχαριστώ mikem θα κοιτάξω και αυτά που μου έδωσες ,φαίνονται κουλ ;)
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Tue Nov 30, 2004 10:48 pm

για να τρέξει ένα executable δεν χρειάζεται compile. είναι binary αρχείο. Αν το πρόγραμμά σου περιλαμβάνει περίεργες βιβλιοθήκες τότε πρέπει να φτιάξεις έναν installer που να περιέχει και να εγκαθιστά αυτές τις βιβλιοθήκες
[Better to understand a little than to misunderstand a lot]
User avatar
minas
byte level
byte level
Posts: 63
Joined: Mon May 03, 2004 2:22 pm
Location: Milky Way

Post by minas » Wed Dec 01, 2004 1:32 am

Γιατί δεν κάνεις 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 κατί που περιέργως αναφέρεται και από εσένα τον ίδιο.
User avatar
ailouros
Gbyte level
Gbyte level
Posts: 1041
Joined: Fri Apr 30, 2004 4:36 pm
Academic status: Alumnus/a
Contact:

Post by ailouros » Wed Dec 01, 2004 11:21 am

Το static compile γίνεται αν επιλέξω στις ρυθμίσεις του project ,Use Microsoft Foundation Classes in a Static Library ή με κάποιον άλλο τρόπο;Επίσης το debug με το release τι διαφορετικό έχουν;
(Για το παράδειγμα που ανέφερα ήταν απλώς μια περίπτωση την οποία είχα αποτύχει να περιγράψω γλαφυρά στο πρώτο ποστ [όπου δηλαδή ζητούσε κάποια dll],το cygwin μπήκε ως επιπλέον περιττή πληροφορία και σε καμια περίπτωση δεν με εκφράζει :-D :smile: :-D )
User avatar
mikem4600
Gbyte level
Gbyte level
Posts: 1363
Joined: Fri Mar 12, 2004 2:00 pm
Academic status: Alumnus/a
Gender:
Location: A Galaxy Far, Far Away
Contact:

Post by mikem4600 » Thu Dec 02, 2004 12:28 pm

ailouros wrote:Το static compile γίνεται αν επιλέξω στις ρυθμίσεις του project ,Use Microsoft Foundation Classes in a Static Library ή με κάποιον άλλο τρόπο;
Ναι, έτσι γίνεται, αλλά αναφέρεται στο MFC μόνο. Αν δεν το χρησιμοποιείς (π.χ. παίζεις με ATL/WFC κτλ.) δεν έχει νόημα.
ailouros wrote:Επίσης το debug με το release τι διαφορετικό έχουν;
Release compile κάνεις όταν έχεις τελειώσει το project και θες να το "μοιράσεις" σε κόσμο. Το εκτελέσιμο έχει μικρότερο μέγεθός και ο κώδικάς του εκτελείται γρηγορότερα (και γίνονται και optimizations). Debug compile κάνεις όταν αναπτύσεις την εφαρμογή και θες π.χ. να μπορείς να βάζεις breakepoints και να σταματάει το IDE στο σημείο του κώδικα C++ που είναι το breakpoint (στην release έκδοση θα σου δείχνει απλώς disassembly, που δεν είναι ό,τι πιο χρήσιμο)... Το εκτελέσιμο όμως είναι μεγαλύτερο και πιο αργό στην εκτέλεση (γιατί περιλαμβάνει debug symbols και συνήθως δεν γίνονται optimizations).
Autocracy hates questions. Anarchy hates answers.
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Thu Dec 02, 2004 3:18 pm

Δοκίμασε να κάνεις αυτό που αναφέρει ο Μηνάς. Απλά θα πρέπει να βάλεις τις κοινόχρηστες βιβλιοθήκες μαζί. Βέβαια αυτό εάν είναι ένα - δύο 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
Post Reply

Return to “Προγραμματισμός”