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

Απορία για VC++


billxl

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

Δημοσ.

Για προγραμματισμό εφαρμογών με γραφικό περιβάλλον σε C++ το Qt είναι πολύ καλό: εύκολο στη χρήση, πλούσιο σε λειτουργίες, τρέχει παντού (σε Windows, Linux, Mac), έχει πολύ καλό γραφικό εργαλείο κατασκευής του περιβάλλοντος (Qt Creator).

 

Γνωμη μου, ολα ευκολα ειναι, αρκει να μαθεις event driven προγραμματισμο. rolleyes.gif

mig http://stackoverflow.com/questions/1073509/should-i-redistribute-msvcrt-dll-with-my-application

  • Απαντ. 42
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Βαλε και κανενα χρωματακι! Επισης δε θυμαμαι πως γινεται μαλλον το γυριζεις σε character input καπως και οταν πατας το enter δε κανει αυτο το σπαστικο!

Δημοσ.

[offtopic]

Βαλε και κανενα χρωματακι! Επισης δε θυμαμαι πως γινεται μαλλον το γυριζεις σε character input καπως και οταν πατας το enter δε κανει αυτο το σπαστικο!

Θα σπάσει τη συμβατότητα του κώδικα ρε συ, τώρα είναι πλήρως συμβατός με το ANSI standard. Το μεγάλο μου πρόβλημα είναι το AI πάντως, το περίμενα πολύ πιο βατό, αλλά δεν είναι... το βλέπω να με παίρνει κάνα μήνα για να το κάνω καλό :lol:

[/offtopic]

Δημοσ.

Μα δεν έχω VS σου λέω ρε συ... θες να βάλω το dll στο zip?

 

Καλα λες, μετα απο ψαξιμο ειδα οτι το msvrct.dll ειναι μερος των windows. Κατι μαθαμε grin.png

Δημοσ.

Δεν έχει να κάνει με το αν είναι σε κονσόλα ή όχι. Το εκτελέσιμο αρχείο που παράγεται τρέχει μόνο σε όσους υπολογιστές έχουν το ίδιο λειτουργικό σύστημα με σένα. Στα υπόλοιπα θα πρέπει να κάνεις compile ξανά τον πηγαίο κώδικα ώστε να παραχθεί νέο εκτελέσιμο αρχείο για εκείνο το λειτουργικό.

 

Εγώ νομίζα ότι εφόσον το εκτελέσιμο αρχείο που δημιουργήθηκε τρέχει σε DOS θα τρέχει και στο RedHat Linux, στο Ubuntu κλπ. Φυσικά αν θα έχουν και το πρόγραμμα για DOS emulation (DOSEMU).

Του άλλαξα και το όνομα πριν το τρέξω σε DOS για να βεβαιωθώ ότι δεν υπάρχει πρόβλημα.

Έκανα και μια version σε παραθυρικό περιβάλλον με το VS 8 σε C++ που λειτουργεί στα Windows XP, στα Windows 2000, στα Windows 98 και προηγούμενα. Για τα Windows Vista και τα επόμενα λειτουργικά δεν ξέρω.

Δημοσ.

Εγώ νομίζα ότι εφόσον το εκτελέσιμο αρχείο που δημιουργήθηκε τρέχει σε DOS θα τρέχει και στο RedHat Linux, στο Ubuntu κλπ. Φυσικά αν θα έχουν και το πρόγραμμα για DOS emulation (DOSEMU).

 

Του άλλαξα και το όνομα πριν το τρέξω σε DOS για να βεβαιωθώ ότι δεν υπάρχει πρόβλημα.

Έκανα και μια version σε παραθυρικό περιβάλλον με το VS 8 σε C++ που λειτουργεί στα Windows XP, στα Windows 2000, στα Windows 98 και προηγούμενα. Για τα Windows Vista και τα επόμενα λειτουργικά δεν ξέρω.

Όταν λέμε δεν τρέχει σε άλλο λειτουργικό, εννοούμε natively. Με emulation μπορεί να τρέξει, μπορεί και όχι... εξαρτάται από το πόσο πιστό emulation κάνει ο emulator.

 

Η ουσία είναι πως το εκτελέσιμο αρχείο είναι σε γλώσσα μηχανής που καταλαβαίνει μόνο η πλατφόρμα στην οποία έχει γίνει compile ο πηγαίος κώδικας. Όσο για τις εκδόσεις των Windows, δεν λογίζονται διαφορετικές πλατφόρμες. Οι 4 βασικές πλατφόρμες είναι Windows, Unix, Linux και MacOS (και εσχάτως τα λειτουργικά των smart phones).

Δημοσ.

Αν ειναι ιδια αρχιτεκτονικη λογικα ειναι ιδιος ο κωδικας assembly αλλα αλλαζει το format του αρχειου. Πχ τα exe ειναι PE format ενω τα linux δε ξερουν απο PE.

Δημοσ.

Nop. Θελει CRT. Μπορεις να την ενσωματωσεις ( project properies / config properties / C++ / code generation/ runtime library σεταρεις σε multi-threaded (MT) )

 

Τι είναι αυτά; Δεν κατάλαβα τίποτα... Εγώ ασχολούμαι μόνο με την δημιουργία επαγγελματικών προγραμμάτων για Windows XP.

Αν θέλω να λειτουργούν και στα Linux θα το δώσω στους ειδικούς που γνωρίζουν καλύτερα πως γίνεται.

Δημοσ.

Τι είναι αυτά; Δεν κατάλαβα τίποτα... Εγώ ασχολούμαι μόνο με την δημιουργία επαγγελματικών προγραμμάτων για Windows XP.

Αν θέλω να λειτουργούν και στα Linux θα το δώσω στους ειδικούς που γνωρίζουν καλύτερα πως γίνεται.

 

Δεν ξέρω αν πρέπει να γελάσω ή να κλάψω.

 

Εντάξει, η άγνοια δεν είναι έγκλημα (βέβαια δεν είναι και "επαγγελματική", αν μου επιτρέπεις). Αλλά να σου μιλάει για επιλογές menu του Visual Studio (που χρησιμοποιείς) τις οποίες θα έπρεπε να βλέπεις μπροστά σου τουλάχιστον μία φορά (στην πράξη πολλές φορές) για κάθε project, και συ να νομίζεις ότι μιλάει για Linux...

 

:shock:

 

 

Αν σου έδινε εσένα ο γιατρός φάρμακα και σου έλεγε "δεν ξέρω πώς λειτουργούν αλλά μην ανησυχείς, σε όσους τα έχω δώσει μέχρι τώρα δουλέψαν τέλεια", τι γνώμη θα σχημάτιζες;

Δημοσ.

Ε φυσικά μιλάω και για Linux εφόσον η αρχική μου ερώτηση ήταν αν δουλεύει το hello.exe που έφτιαξα με το Visual Studio 8 σε Windows XP σε όλες τις πλατφόρμες. Δούλεψα το Visual Studio 8 μόνο 5 λεπτά... Και ο παπι απάντησε πάνω σε αυτό το ζήτημα όπως και οι migf1 και CtrlFreak. Μάλλον εσύ δεν κατάλαβες την ερώτηση.

Οι πληροφορίες του billxl ήταν πολύ χρήσιμες για να δω και τις δυνατότητες του compiler του Visual C++ Express.

 

Όσο για τα επαγγελματικά προγράμματα στα Windows XP τα φτιάχνω με εργαλεία όπως το SDK της Microsoft και την Rapid-Q του William Yu.

Δημοσ.

Μόλις λίγο πριν έφτιαξα το "Hello world!" για κονσόλα με το VS 8 επειδή το SP3 δεν μπορεσα να το εγκαταστήσω για να ολοκληρώσω και την εγκατάσταση του VS 10 express. Τώρα αυτό το hello.exe θα λειτουργεί σε όλα τα computers ή απαιτούνται και άλλα αρχεία;

 

Όσο αναφορά το πρώτο κομμάτι του πόστ σου, θα πρότεινα όταν με το καλό βάλεις VS 10 να βάλεις την πλήρη έκδοση. Θεωρητικά δεν θα πρέπει εσύ ο ίδιος να παρατηρήσεις διαφορά, αλλά έχω δει πολλά άτομα (συμπεριλαμβανομένου και του εαυτού μου όταν ξεκίνησα (όχι με VS 10)) να πέφτουν σε προβλήματα με απλό κώδικα και να φτέει η express έκδοση επειδή δεν έχει όλα τα include αρχεία και όλες τις βιβλιοθήκες. Και αυτά τα προβλήματα συνήθως εμφανιζόντουσαν όταν προσπαθούσαν(θούσαμε) να κάνουμε compile κώδικα απο παραδείγματα βιβλίων. Όπως είπα, θεωρητικά δεν θα αντιμετωπίσεις πρόβλημα με την express, αλλά καλό είναι να υπάρχει σαν πληροφορία.

 

Στο desktop ναι, (εχω καμια 10 crt) στο laptop που δεν εχω crt μαλλον δεν happy.gif

 

Δεν είμαι σίγουρος πως να διατυπώσω αυτά που έχω να πω, οπότε επιτρέψτε μου να τα παρουσιάσω σαν ένα μικρό πίνακα:

(Τα παρακάτω ισχυούν εφόσον δεν γίνουν αλλαγές στον linker για να χρησιμοποιεί διαφορετικές βιβλιοθήκες)

 

Κώδικας που γίνεται compile σε MSVC 6:

Βιβλιοθήκη που χρειάζεται στο σύστημα που θα εκτελεστεί: msvcrt.dll

Συστήματα που διαθέτουν αυτή τη βιβλιοθήκη απο την αρχική εγκατάσταση: >=Win2K (Win2K, Win2K3(2003), XP, Vista, 7)

 

Κώδικας που γίνεται compile σε VS 8:

Βιβλιοθήκη που χρειάζεται στο σύστημα που θα εκτελεστεί: msvcrt90.dll

Συστήματα που διαθέτουν αυτή τη βιβλιοθήκη απο την αρχική εγκατάσταση: >=Windows Vista (Vista, 7) -- Σημείωση: Είμαι 70% σίγουρος ότι υπάρχει στο SP3 των Windows XP αλλά δεν μπορώ να το επιβεβαιώσω αυτή τη στιγμή

 

Κώδικας που γίνεται compile σε VS 10:

Βιβλιοθήκη που χρειάζεται στο σύστημα που θα εκτελεστεί: msvcrt100.dll

Συστήματα που διαθέτουν αυτή τη βιβλιοθήκη απο την αρχική εγκατάσταση: >=Windows Vista (Vista, 7)

 

Λογικό είναι συστήματα που δεν έχουν την απαραίτητη βιβλιοθήκη την οποία χρησιμοποίησε ο linker σου να μην τρέξουν. Π.χ. ένα πρόγραμμα που έκανες compile σε VS 10, εάν το τρέξεις σε καθαρή εγκατάσταση XP, θα σου πει ότι λείπει το msvcrt100.dll

 

Ίσως ξεφεύγει απο την ουσία του θέματος, αλλά μιας και πιάσαμε το θέμα, για να κάνεις μια εφαρμογή που έφτιαξες σε VS 10 να τρέξει σε XP, πρέπει να κάνεις τα παρακάτω απλά βήματα:

 

1. Κατεύασε το msvcrt.lib (κατά προτίμηση θα έβρισκα το Windows Platform SDK ή θα το έπερνα απο την MSVC 6)

2. Τοποθέτησέ το στο φάκελο του project σου με ένα άλλο όνομα (CRT6.lib είναι μια ουδέτερη πρόταση)

3. Στα project settings σου, linker -> Input, πές του /NODEFAULTLIB (Ignore all default libraries -> Αγνόηση όλων των αρχικών(?) βιβλιοθηκών) -> αυτό θα πεί στον linker να ξεχάσει όλες της βιβλιοθήκες που κοίταγε απο μόνο του και να χρησιμοποιήσει αυτές που υποδικνύεις στο πεδίο "Additional Dependencies"

4. Στο πεδίο "Additional Dependencies" πρόσθεσε στο τέλος το CRT6.lib και αφαίρεσε οποιαδήποτε αναφορά στο "msvcrt.lib" που έχει αυτή η γραμμή.

 

Ελπίζω αυτά να βοηθάνε κάποιους.

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

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

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