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

Πρόβλημα με compile σε Visual Studio 2010


sotosko

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

Δημοσ.

Όταν κάνεις build στο project έχεις την δυνατότητα να το κάνεις Debug ή Release Build (Build->Configuration Manager). Τα εκτελέσιμα αποθηκεύονται στον φάκελο του project (default Documents\Visual Studio 2010\Projects\). Μέσα στον φάκελο του project θα βρείς φάκελο Debug ή Release (ανάλογα τον τύπο του Build). Εκεί μέσα είναι τα εκτελέσιμα.

Οκ, το βρήκα.

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

Οκ, το βρήκα.

 

 

Εκεί που έχει τις επιλογές για το Build μέσα από το VS έχει και επιλογή για clean.

Χρησιμοποίησέ την.

 

Είναι το ίδιο με το να επιλέξεις Rebuild.

 

Δοκίμασέ το.

 

Επέλεξε clean και μετά κάνε compile σε terminal.

Δημοσ.

Ψάχνοντας στο internet για το πως γίνεται compile χωρίς project, βρήκα αυτό που βάζει κουμπί Compile στο tools (τελευταία απάντηση). Αν βρεις όλες τις παραμέτρους του cl.exe (το Path για το cl.exe είναι "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\cl.exe") λογικά θα δουλέψει σωστά και χωρίς project (πάντα δούλευα project οπότε δεν έχω ιδέα τι παραμέτρους θέλει).

Δημοσ.

Εκεί που έχει τις επιλογές για το Build μέσα από το VS έχει και επιλογή για clean.

Χρησιμοποίησέ την.

 

Είναι το ίδιο με το να επιλέξεις Rebuild.

 

Δοκίμασέ το.

 

Επέλεξε clean και μετά κάνε compile σε terminal.

Πάλι το ίδιο σφάλμα βγάζει

 

Ψάχνοντας στο internet για το πως γίνεται compile χωρίς project, βρήκα αυτό που βάζει κουμπί Compile στο tools (τελευταία απάντηση). Αν βρεις όλες τις παραμέτρους του cl.exe (το Path για το cl.exe είναι "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\cl.exe") λογικά θα δουλέψει σωστά και χωρίς project (πάντα δούλευα project οπότε δεν έχω ιδέα τι παραμέτρους θέλει).

 

Ο τρόπος αυτός φαίνεται εξίσου καλός. Ακολούθησα τα βήματα αλλά τώρα όταν πατάω το κουμπί που δημιούργησα μου εμφανίζει το εξής σφάλμα: "Η εκκίνηση αυτού του προγράμματος δεν ήταν δυνατή, επειδή το στοιχείο mspdb100.dll λείπει από τον υπολογιστή σας."

 

Μέχρι να σταματήσει να δουλεύει σωστά, εγώ έκανα compile με αυτόν τον τρόπο

Δημοσ.

Εγώ θα τολμούσα να πώ ότι στο %path% του PC σου υπάρχει κάτι που προσπαθεί να το ακολουθήσει o complier αλλά δεν το βρίσκει λόγω του space στο path. Ακόμα και άν δεν είναι στο path το λάθος, είναι σε κάποιο .ini ή ότι τέλος πάντων διαβάζει o compiler για να βρεί τα "σύνεργα" για να κάνει αυτό που πρέπει να κάνει.

Δημοσ.

Εγώ θα τολμούσα να πώ ότι στο %path% του PC σου υπάρχει κάτι που προσπαθεί να το ακολουθήσει o complier αλλά δεν το βρίσκει λόγω του space στο path. Ακόμα και άν δεν είναι στο path το λάθος, είναι σε κάποιο .ini ή ότι τέλος πάντων διαβάζει o compiler για να βρεί τα "σύνεργα" για να κάνει αυτό που πρέπει να κάνει.

Αν είχαν πρόβλημα με το Space στο Path τα Windows, τότε δεν θα ονόμαζαν ποτέ έναν φάκελο "Program Files" μέσα στον οποίο είναι όλα σχεδόν τα προγράμματα (από default) τουλάχιστον...

Δημοσ.

Αν είχαν πρόβλημα με το Space στο Path τα Windows, τότε δεν θα ονόμαζαν ποτέ έναν φάκελο "Program Files" μέσα στον οποίο είναι όλα σχεδόν τα προγράμματα (από default) τουλάχιστον...

 

Μπορώ να συμφωνήσω.

Μου φαίνεται το πρόβλημα που αντιμετωπίζω είναι από αυτά τα προβλήματα που σε παιδεύουν για πολύ καιρό και τελικά δεν βρίσκεις λύση. (Όπως για παράδειγμα το πρόβλημα με τον installer του Matlab που αρνείται να ξεκινήσει...)

Δημοσ.

Αν δεν θέλεις να χρησιμοποιείς project δεν έχει πολύ νόημα το να γράφεις σε ένα IDE, ειδικά των δυνατοτήτων του visual studio.

 

Kαι γενικά η γραφή ενός 'ξεκάρφωτου' *.cpp και το άμεσο compiling του είναι κακή συνήθεια.

To project έχει την έννοια ότι επιτρέπει να κάνεις εύκολα ένα πλήθος ρυθμίσεων όπως

τα ονόματα των αρχείων που παράγονται (exe, lib, pdb), η θέση που θα τοποθετηθούν,

να ορίσεις διαμορφώσεις (πέραν των αρχικών debug & release), ποιές βελτιστοποιήσεις θα είναι ανοιχτές,

να συμπεριλαμβάνεις βιβλιοθήκες και άλλα αρχεία που τυχόν χρειάζονται, να θέτεις παραμέτρους στην γραμμή εντολών,

να ενεργοποιείς ειδικές λειτουργίες όπως το ΟpenMP και άλλα χρήσιμα (ή άχρηστα !) πράγματα.

Όλες αυτές οι ρυθμίσεις αποθηκεύονται αυτόματα από το VS στα συνοδευτικά αρχεία (όπως τα *.sln και *.vproject) που

δεν τα αγγίζεις ποτέ. Είναι εξαιρετική ευκολία.

 

Ακόμα κι' αν πρόκειται μόνον για μικρά δοκιμαστικά προγράμματα, μπορείς να φτιάξεις ένα project και

να τα θέτεις όλα σε έναν φάκελο ως *.txt. Kάθε φορά που θέλεις να τρέξεις κάποιο, απλώς το μετονομάζεις σε cpp και

το τρέχεις χωρίς να βγεις από VS (δεξί κλικ επάνω του και του αλλάζεις το όνομα).

Ή να το έχεις κενό και κάθε φορά να βάζεις σ' αυτό το νέο σου cpp.

Ψάξε πώς γίνονται αυτά κι' όχι πώς θα κάνεις compile ένα ξεκάρφωτο *.cpp

 

Για να κάνεις από την γραμμή εντολών compile-build κάτι που έχει πολλές ρυθμίσεις θα πρέπει να γράφεις σκριπτάκια,

πράγμα όχι και τόσο πρακτικό όταν υπάρχουν έτοιμες όλες οι ευκολίες μέσα από το περιβάλλον.

Το μόνον μειονέκτημα ίσως είναι ότι το IDE απομακρύνει από τον hard core χειρισμό του υπολογιστή.

 

-

Δημοσ.

Αν δεν θέλεις να χρησιμοποιείς project δεν έχει πολύ νόημα το να γράφεις σε ένα IDE, ειδικά των δυνατοτήτων του visual studio.

 

Kαι γενικά η γραφή ενός 'ξεκάρφωτου' *.cpp και το άμεσο compiling του είναι κακή συνήθεια.

To project έχει την έννοια ότι επιτρέπει να κάνεις εύκολα ένα πλήθος ρυθμίσεων όπως

τα ονόματα των αρχείων που παράγονται (exe, lib, pdb), η θέση που θα τοποθετηθούν,

να ορίσεις διαμορφώσεις (πέραν των αρχικών debug & release), ποιές βελτιστοποιήσεις θα είναι ανοιχτές,

να συμπεριλαμβάνεις βιβλιοθήκες και άλλα αρχεία που τυχόν χρειάζονται, να θέτεις παραμέτρους στην γραμμή εντολών,

να ενεργοποιείς ειδικές λειτουργίες όπως το ΟpenMP και άλλα χρήσιμα (ή άχρηστα !) πράγματα.

Όλες αυτές οι ρυθμίσεις αποθηκεύονται αυτόματα από το VS στα συνοδευτικά αρχεία (όπως τα *.sln και *.vproject) που

δεν τα αγγίζεις ποτέ. Είναι εξαιρετική ευκολία.

 

Ακόμα κι' αν πρόκειται μόνον για μικρά δοκιμαστικά προγράμματα, μπορείς να φτιάξεις ένα project και

να τα θέτεις όλα σε έναν φάκελο ως *.txt. Kάθε φορά που θέλεις να τρέξεις κάποιο, απλώς το μετονομάζεις σε cpp και

το τρέχεις χωρίς να βγεις από VS (δεξί κλικ επάνω του και του αλλάζεις το όνομα).

Ή να το έχεις κενό και κάθε φορά να βάζεις σ' αυτό το νέο σου cpp.

Ψάξε πώς γίνονται αυτά κι' όχι πώς θα κάνεις compile ένα ξεκάρφωτο *.cpp

 

Για να κάνεις από την γραμμή εντολών compile-build κάτι που έχει πολλές ρυθμίσεις θα πρέπει να γράφεις σκριπτάκια,

πράγμα όχι και τόσο πρακτικό όταν υπάρχουν έτοιμες όλες οι ευκολίες μέσα από το περιβάλλον.

Το μόνον μειονέκτημα ίσως είναι ότι το IDE απομακρύνει από τον hard core χειρισμό του υπολογιστή.

 

-

 

Δεν μπορώ παρά να συμφωνήσω και μαζί σου. Το θέμα είναι ότι μου φαίνεται περίεργο το πώς πιο πριν δούλευε το compile από το command prompt ενώ τώρα ξαφνικά βγάζει πρόβλημα. Βέβαια, υπολογιστές είναι αυτοί οπότε...

Δημοσ.

Ποσταρε το promp

πχ

>


E:\Users\papi\Documents\Visual Studio 2010\Projects\test\test>cl test.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

test.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:test.exe
test.obj

E:\Users\papi\Documents\Visual Studio 2010\Projects\test\test>

Δημοσ.

Αν είχαν πρόβλημα με το Space στο Path τα Windows, τότε δεν θα ονόμαζαν ποτέ έναν φάκελο "Program Files" μέσα στον οποίο είναι όλα σχεδόν τα προγράμματα (από default) τουλάχιστον...

 

Εγώ δεν έγραψα ότι φταίνε τα windows.

Έγραψα ότι φταίει ο compiler.

Για την ακρίβεια έγραψα ότι φταίει κάτι στο %path% ή .ini ή registry entry ή οτιδήποτε άλλο στέλνει to cl.exe να ψάξει σε ένα φάκελο το path του οποίου περιέχει κενά.

Το ότι είναι πρόβλημα με τα κενά σε κάποιο path το ξέρουμε ήδη καθώς ο sotosko μας έχει πει ότι το Username του είναι "Σωτήρης Κ" ενώ το μήνυμα λάθους δεν έχει πάρει χαμπάρι για το τι γίνεται μετά το "Σωτήρης".

 

Το πιθανότερο είναι ότι κάπου έχει χρησιμοποιήσει το "C:\users\Σωτήρης K_κ.λπ." και έχει ξεχάσει να το βάλει μέσα σε quotes ("")

Δημοσ.

Το πιθανότερο είναι ότι κάπου έχει χρησιμοποιήσει το "C:\users\Σωτήρης K_κ.λπ." και έχει ξεχάσει να το βάλει μέσα σε quotes ("")

Αυτό το λάθος δεν γίνεται όμως να το έχω κάνει εγώ ο ίδιος καθώς δεν έβαλα πουθενά κανένα path. Εγώ απλά πηγαίνω με "cd" στον φάκελο που βρίσκεται ο κώδικας και κάνω "cl".

Υπάρχει περίπτωση κάτι που εγκατέστησα πρόσφατα να κατέστρεψε την ακεραιότητα του command prompt του Visual Studio; (Αν και όλα γίνονται αν μιλάμε για Windows...)

Δημοσ.

Το βρήκα (εντάξει το διάβασα από αλλού)

 

sotοs έχεις κάνει λάθος στο set tmp=<path εδω>

 

παράδειγμα

 

>
C:\Users\john\pa tata>set Tmp=c:\Temp\άλλο φρούτο

C:\Users\john\pa tata>cl d:\temp\0\hello.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

hello.c
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

LINK : fatal error LNK1104: cannot open file 'c:\Temp\άλλο'

C:\Users\john\pa tata>

 

Προσθήκη

Δεξί click στο My Computer

Properties

Advanced system settings

Environment Variables...

 

Ελεγξε τι λέει εκεί για το TMP

Δημοσ.

Το βρήκα (εντάξει το διάβασα από αλλού)

 

sotοs έχεις κάνει λάθος στο set tmp=<path εδω>

 

παράδειγμα

 

>
C:\Users\john\pa tata>set Tmp=c:\Temp\άλλο φρούτο

C:\Users\john\pa tata>cl d:\temp\0\hello.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

hello.c
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

LINK : fatal error LNK1104: cannot open file 'c:\Temp\άλλο'

C:\Users\john\pa tata>

 

Προσθήκη

Δεξί click στο My Computer

Properties

Advanced system settings

Environment Variables...

 

Ελεγξε τι λέει εκεί για το TMP

 

Ποτέ μα ποτέ δεν θα σκεφτόμουν ότι μπορεί να φταίει κάτι τέτοιο.

Λοιπόν, στο TMP έχει "%USERPROFILE%\AppData\Local\Temp" χωρίς τα εισαγωγικά

 

Υ.Γ. Το άλλαξα σε "temp" που είναι ο φάκελος C:\temp και τώρα δουλεύει κανονικά.

Αλήθεια, ποιο είναι το default directory του TMP;

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

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

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