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

Διαφορές C, C++ και C#


xrist0f0r0s

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

Τα έκανα και αυτά στο np++, αλλά δεν έχουν σημασία γιατί και σκέτο csc που γράφω στο cmd μου πετάει:

fatal error CS2018: Unable to find messages file 'cscui.dll'

Στο google δεν είχε και πολλά περι αυτού.

...

Αν το πρόβλημα επιμείνει, δοκίμασε να περάσεις ξανά το .net 4

 

Υπερβαλεις.

 

 

Και πως είναι πιο εύκολο ή πιο γρήγορο αυτό που δείχνει το βίντεο, από το: double-click στο tabs bar για κάθε νέο πρόγραμμα, πληκτρολόγηση κώδικα, και κατόπιν F6 [Enter] για save, compile + run?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Συχνή συμμετοχή στο θέμα

Εντάξει και τα δύο εύκολα είναι. Εγώ θα το χρησιμοποιούσα το NP++ μόνο επειδή είναι καλός editor με δυνατότητες, και για να μη κατεβάζω ολόκληρο το VCSExpress.

Αλλά δεν μπόρεσα να κάνω τον command-line compiler να δουλέψει, ενώ μέσα απο το visual studio έκανα compile και build κανονικά.

 

Μπορεί να δοκιμάσω και το sharpdevelop αλλά νομίζω πως υστερεί σε ταχύτητα και δυνατότητες ε;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...

Αλλά δεν μπόρεσα να κάνω τον command-line compiler να δουλέψει, ενώ μέσα απο το visual studio έκανα compile και build κανονικά.

...

 

Κάτι παίζει με τα environment variables στα 8-άρια σου. Από τη στιγμή που το .exe υπάρχει το μόνο που χρειάζεται είναι να προσθέσεις το φάκελό του στο PATH των Windows σου (συνήθως είναι στο: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 ... αν έχεις και παλιότερες εκδόσεις του .net θα υπάρχει και σε αυτές, εσύ προφανώς θες μονάχα τον φάκελο της τελευταίας). Εκτός του csc.exe θα μπορείς να καλείς από cmd οτιδήποτε σχετικό με .net.

 

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

 

To είχα βάλει και ως system variable, αλλά δεν έγινε.

Θα το δω αύριο μήπως χρειάζεται restart (νομίζω χρειάζεται). Αύριο θα σου πω.

 

Τώρα το είδα αυτό! Δεν πρέπει να το βάλεις ως system variable, αλλά να προσθέσεις τον φάκελο του .net στους φακέλους που έχει ήδη μέσα του το environment variable PATH: http://www.java.com/en/download/help/path.xml

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κάτι παίζει με τα environment variables στα 8-άρια σου. Από τη στιγμή που το .exe υπάρχει το μόνο που χρειάζεται είναι να προσθέσεις το φάκελό του στο PATH των Windows σου (συνήθως είναι στο: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 ... αν έχεις και παλιότερες εκδόσεις του .net θα υπάρχει και σε αυτές, εσύ προφανώς θες μονάχα τον φάκελο της τελευταίας). Εκτός του csc.exe θα μπορείς να καλείς από cmd οτιδήποτε σχετικό με .net.

 

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

 

 

 

Τώρα το είδα αυτό! Δεν πρέπει να το βάλεις ως system variable, αλλά να προσθέσεις τον φάκελο του .net στους φακέλους που έχει ήδη μέσα του το environment variable PATH: http://www.java.com/en/download/help/path.xml

 

Όχι, και αυτό το έκανα εχθές. Δηλαδή επειδή δεν ήμουν σίγουρος, το έβαλα πρώτα ως value στο ήδη υπάρχον system variable "path" και μετά το έβαλα και στα user variables, δημιουργώντας νέα value με όνομα "PATH"

Δεν δούλεψε τίποτα απο τα 2. Εχθές αυτά, και δοκίμασα ξανά σήμερα, μήπως ήθελε restart.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τότε ή κάτι δεν κάνεις σωστά (το πιο πιθανό) ή κάτι τρέχει με το στήσιμο των Windows σου. Έχεις screenshot από το σημείο που ορίζεις το PATH variable σου να το δούμε;

 

ΥΓ. Είναι σημαντικό να μην το έχεις χαλάσει, για τη γενικότερη λειτουργία του συστήματός σου.

 

Π.χ. στα XP που είμαι τώρα, το έχω προσθέσει ως τελευταία διαδρομή του User PATH (έχει και πιο δεξιά από αυτό που φαίνεται στην εικόνα :P ) ... παρόμοια είναι και η οθόνη στα 7άρια (που δεν τα έχω εδώ τώρα).

post-38307-0-06434200-1321212907_thumb.jpg

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όχι, νομίζω σωστά το έχω κάνει. Το είχα κάνει και στο eclipse κανονικά με τον g++ compiler αν θυμάμαι καλά και δούλεψε με τη πρώτη.

Θα δοκιμάσω σε άλλο υπολογιστή με 7άρια σχετικά καθαρά να δω αν εκεί θα δουλέψει αν κάνω ακριβώς αυτό.

 

Μέσα γράφει μόνο αυτό: "C:\Windows\Microsoft.NET\Framework\v4.0.30319"

ξαναλέω πως δεν υπήρχε πριν το value, εγώ το πρόσθεσα

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στο πάνω μέρος πάντα έτσι; Στο User δηλαδή (και όχι στο System)... και με κεφαλαία γράμματα το PATH (just in case). Και είναι σωστή η διαδρομή που έχεις βάλει, το έχεις τσεκάρει, ε;

 

Αν όλα σε όλα τα παραπάνω η απάντηση είναι "ναι", τότε τα έχεις κάνει σωστά (μάλλον κακό αυτό, γιατί τότε θα φταίει κάτι μάλλον πιο σοβαρό).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι βρίσκεται. Μα φαίνεται οτι πριν δεν μου αναγνώριζε την εντολή csc.

Τώρα μου την αναγνωρίζει αλλά βγάζει fatal error.

Δεν πειράζει, κατέβασα και το vcsexpress και το sharpdevelop, και θα χρησιμοποιώ μάλλον το πρώτο, πολύ καθαρότερο ui.

Αλλά ας φτάσω πρώτα εκεί και βλέπω ξανά.

 

Ευχαριστώ κιόλας για τον χρόνο σου με το θέμα του compiler.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μάλλον δεν είναι το κατάλληλο νήμα, αλλά μιας κι έχει κι άλλα posts για τη χρήση του Notepad++ ως γενικό IDE οποιασδήποτε γλώσσας, το βάζω εδώ (και ίσως μελλοντικά τα συγκεντρώσω όλα μαζί σε ξεχωριστά νήματα).

 

Ένα από τα λίγα πράγματα που "αναπολούσα" ήταν η δυνατότητα να κάνω διπλό-κλικ στις γραμμές που υποδήλωναν με λάθη οι compilers, στην κονσόλα του NppExec. Μόλις χτες όμως ανακάλυψα ότι μπορεί και το κάνει, μέσω της επιλογής "Consol Output Filters"του NppExec.

 

Αρκεί να παρατηρήσει κανείς τι γράφουν οι γραμμές των compilers όταν βρουν σφάλμα στη κονσόλα του NppExec, και να φτιάξει αντίστοιχα φίλτρα. Επισυνάπτω στιγμιότυπα από την διαδικασία με τη σειρά. Το φίλτρο που δείχνω με κόκκινο βέλος στον διάλογο του φίλτρου δουλεύει για τα σφάλματα που βγάζει ο GCC (mingw) ενώ το 3ο φίλτρο δουλεύει για τα σφάλματα που βγάζει ο compiler της C#.

 

ΥΓ. Στα 2 τελευταία στιγμιότυπα είναι a) το σκριπτάκι που κάνει compile αρχεία C# με πληροφορίες debuging και β) το αποτέλεσμα του φίλτρου (είναι επιλεγμένη η γραμμή που έχω κάνει διπλό-κλικ κι έχει πάει τον κέρσορα στο λάθος, στον κώδικα).

post-38307-0-61947400-1321275038_thumb.jpg

post-38307-0-53963600-1321275051_thumb.jpg

post-38307-0-39017700-1321275071_thumb.jpg

post-38307-0-57553500-1321275151_thumb.jpg

post-38307-0-93624900-1321275166_thumb.jpg

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Λοιπόν, καταρχάς έχω αρχίσει το διάβασμα του βιβλίου, 40 σελιδούλες μόνο, και αυτές εισαγωγικές, αλλά φαίνεται πολύ καλό βιβλίο.

 

Στο θέμα του compiler...

Πήγα απο τον explorer να βρω το αρχείο, και είδα οτι ο φάκελο /framework/ μέσα στον /Microsoft.NET δεν υπάρχει.

Λέω που να πήγε;

Αλλάζω manual την διεύθυνση του path πάνω και βάζω το /Framework και βγάζει μήνυμα δεν το βρήκε.

 

Επειδή όμως ψάχνω μέσω του προγράμματος everything, το ψάχνω ξανά. Το βρίσκει το αρχείο csc.exe μέσα στον φάκελο framewrok/version..

Πατάω και explore path και το ανοίγει και ο explorer. Πατάω και back και βλέπω και τον φάκελο /Framework να υπάρχει.

Αλλά αν κλείσω το παράθυρο και το ξαναψάξω δεν εμφανίζεται. Και δεν είναι καν κρυφός. Ούτε με total commander μου τον εμφανίζει.

Ούτε μου τον εμφανίζει αν πάω "άμεσα" μέσα σε αυτόν, απο το run δηλαδή αν γράψω το full path (C:\Program Files\Microsoft.NET\Framework)

Μόνο μετά την αναζήτηση απο το everything και πατήσω explore path.

Πολύ περίεργο ε;

 

Άρα μάλλον εκεί παίζει πρόβλημα, μήπως με τίποτα δικαιώματα κτλ.

 

Μετά δημιούργησα ένα .cs αρχείο, έτρεξα το command line απο εκείνη τη τοποθεσία, αλλά αντί να γράψω "csc test.cs" έβαλα το full path για το csc.exe, δηλαδή "C:\pro~\Micosoft.net\framework\ekdosi\csc.exe test.cs"

και μου έβγαλε output ένα test.exe που έτρεχε κανονικά.

 

Άρα θα προσπαθήσω να πειράξω τα δικαιώματα του φακέλου framework αν και δεν με αφήνει εύκολα μήπως γίνει κάτι.

 

Φίλε μου migf1, στο script του np++ άλλαξα το csc με όλη τη διαδρομή για το csc.exe, έγινε compile κανονικά.

Αλλά κάτω απο την εντολή del "$(NAME_PART)".exe μου βγάζει error:

"CreateProcess() failed with error code 2:

The system cannot find the file specified."

 

H εντολή με del είναι με πράσινα γράμματα πάντως.

Που χρειάζεται η del filename.exe πριν γίνει το compile;

 

Μόλις τώρα αφαίρεσα την εντολή del και δεν μου έβγαλε κανένα error.

Άρα είχε πρόβλημα. Δηλαδή δεν είχε τίποτα να σβήσει. Αλλά τι χρειάζεται να σβήσει και δεν μπορεί;

Σκέφτηκα μήπως είναι για να σβήνει ότι .exe είχε δημιουργηθεί πριν, αλλά και πάλι, αφού βγάζει error...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το βιβλίο τα σπάει, δεν το συζητάμε (όπως και το επόμενο που αφοσιώνεται μονάχα σε OOP και .net με VS, αλλά δεν είναι κατάλληλο για ξεκίνημα).

 

Τώρα σε ότι αφορά το που βρίσκεται το csc.exe, ο πιο σίγουρος τρόπος είναι: Έναρξη -> Αναζήτηση -> csc.exe (στα 7άρια δεν υπάρχει "Αναζήτηση", γράφεις απευθείας αυτό που ψάχνεις στο πεδίο στη κάτω μεριά μετά την Έναρξη). Στα αποτελέσματα που θα βγάλει (μπορεί να στο βρει σε διάφορα μέρη) κάνεις Αντιγραφή τη διαδρομή που σε ενδιαφέρει (συνήθως αυτή που είναι μέσα στον φάκελο του .net4) και όπως είναι η διαδρομή αυτή πας και την κάνεις Επικόλληση στο τέλος του environment variable PATH, διαχωρίζοντάς την από την προηγούμενη με ελληνικό ερωτηματικό... έτσι εκμηδενίζεις την πιθανότητα τυπογραφικού λάθους αν το πληκτρολογούσες χειροκίνητα ;) Btw, στα Windows θέλει backslashes στις διαδρομές \ (και όχι slashes / που θέλει στο Linux/Unix).

 

Αφού μπει η διαδρομή στο PATH, πρέπει να κλείσεις και να ξανα-ανοίξεις το παράθυρο του cmd για να καταλάβει την αλλαγή.

 

Τώρα, αν παρόλα αυτά δεν σου το καταλαβαίνει και πάλι το csc.exe από cmd, τότε κάνε αυτό που λες με την απόλυτη διαδρομή του csc.exe.

 

Πάντως για να μην τη πληκτρολογείς συνέχεια, μπορείς να φτιάξεις με έναν οποιοδήποτε text-editor ένα Windows batch file, π.χ. c#.bat...

 

>
"C:\program files\Micosoft.net\framework\ekdosi\csc.exe" %*

προφανώς θα βάλεις τη διαδρομή στην οποία είχες βρει το csc.exe

 

Βάλε τώρα αυτό το c#.bat αρχείο σε έναν φάκελο που υπάρχει ήδη μέσα στο PATH environment variable των Windows σου (είτε ως User είτε ως System) και θα μπορείς από όπου κι αν βρίσκεσαι να γράφεις: c# bla bla bla και θα ισοδυναμεί με: "C:\program files\Micosoft.net\framework\ekdosi\csc.exe" bla bla bla (απλά λόγω περιορισμού των batch files τα bla πρέπει να είναι το πολύ μέχρι 9). Και στο σκριπτάκι του np++

 

Τώρα, ανεξάρτητα από τα παραπάνω, για την εντολή del στο σκριπτάκι του np++, κάνει αυτό ακριβώς που υπέθεσες. Σβήνει τα αρχεία yourprogram.exe (το εκτελέσιμο αρχείο του προγράμματος σου) και yourprogram.pdb (οι debugging πληροφορίες) πριν από κάθε compilation (μπορείς να την αλλάξεις την εντολή αυτή σε: cmd /c del αντί για σκέτο del ). Την 1η φορά δεν υπάρχουν αυτά τα αρχεία, για αυτό σου βγάζει σφάλμα, αλλά αυτό το σφάλμα δεν εμποδίζει το compilation και την εκτέλεση του προγράμματός σου (απλά αναφέρεται ως σφάλμα στη κονσόλα του NppExec).

 

Ο βασικός λόγος που το βάζω να σβήνει το .exe πριν από κάθε compilation, είναι για να μη βρίσκει κάτι εκτελέσιμο να τρέξει αν αποτύχει το compilation. Γιατί με τον gcc π.χ., αν αποτύχει το compilation αλλά υπάρχει το .exe στον φάκελο, το τρέχει... ενώ δεν πρέπει να το τρέξει γιατί αυτό το .exe αντιστοιχεί στο τελευταίο πετυχημένο compilation (ενώ το τρέχον απέτυχε, δηλαδή δεν αντικατέστησε το .exe με φρέσκο).

 

Επίσης, αν θες να δεις τι επιλογές μπορεί να δεχτεί το csc.exe στη γραμμή εντολών (εκείνα τα... bla που γράφω παραπάνω) δες εδώ κι εδώ ( μπορείς προφανώς να τα περάσεις και στο σκριπτάκι του NppExec... ήδη εγώ του περνάω τα /out και /debug όπως δείχνουν οι εικόνες στα άλλα posts).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οκ. Τώρα κατάλαβα. Απλά πριν με την εντολή del δεν μου το έσβηνε, γιατί το είχα δοκιμάσει με ήδη υπάρχον .exe, αλλά τώρα που το έκανα cmd /c del και δοκίμασα να φτιάξω ένα source code με συντακτικό λάθος, δούλεψε. Έσβησε τα προηγούμενα και απλά δεν έφτιαξε καινούριο.

 

Στην αρχή για τους πρώτους απλούς κώδικες εκμάθησης των βασικών εντολών κτλ θα χρησιμοποιώ το np++.

Μετά όταν φτάσω σε σημείο να γράψω λίγο μεγαλύτερο κώδικα, ενδεχομένως με περισσότερα classes κτλ, τότε θα ανοίγω το studio.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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