PDA

View Full Version : compilare mfc da dos tool visual studio 6.0


okay
23-09-2003, 10:20
E' una mia fissa, compilare da dos in linea di comando

CHIARIFICAZIONE:

Riesco a compilare in linea di comando sotto dos applicazioni console, tipica linea di comando:
naturalmente con la shell dos mi trovo nella directory Bin dove c'è program.cpp digitando:
cl /I d:\mvc32\include program.cpp

.....a questo punto ho program.obj e program.exe
quindi le applicazioni console sono a posto.

dentro la dir mvc32 o le seguenti directory (praticamente ho spostato quello del visual studio vc98 e ci ho messo dentro alcuni file e dll per poter far funzionare il tutto):
Alt
Bin
Crt
Include
Lib
Mfc
Rc (quì ci ho messo rc.exe del masm32 v 8.0 e brc, brc32, brcc e brcc32 del TASM 5.0 per compilare i file di risorse)

LA DOMANDA:

Sto cercando di compilare programmi per Win32 Application da dos
e questo è il file batch sempre nella directory Bin:
@echo off
cl /I d:\mvc32\mfc\include /I d:\mvc32\mfc\Lib /I d:\mvc32\include /I d:\mvc32\lib lez1.cpp
riesco ad ottenere Lez1.obj
..... mentre Lez1.exe non viene creato e l'errore è questo:
Unresolved external symbol ...... ecc,ecc.

PER NON AVERE errori, devo usare l'IDE di vc andando nel Menù project, setting e nel General devo scegliere la voce per Microsoft fundation classes, Use MFC in a Static Library, poi faccio la compilazione ed è tutto OK.

Che opzione devo mettere nella linea di comando (sopra) per far capire al compilatore che deve usare Use MFC in a Static Library, compilando da dos un progetto Win32 Application??????

Infatti nell'ide se compilo con Use MFC in a Static Library non ho errori e si crea Lez1.exe (praticamente è una finestra windows)
....... mentre sempre nell'ide se compilo con Not using MFC ho gli stessi errori che ho compilando da dos.............
come risolvere???????????

ciao

okay
23-09-2003, 15:56
Bhè ci sono riuscito.................
La sintassi nel batch è:

cl /I d:\mvc32\mfc\include /I d:\mvc32\mfc\Lib /I d:\mvc32\include /I d:\mvc32\lib /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_Lez1" /D "_MBCS" /FD /GZ /c lez1.cpp


..... mantenendo però nella dir dove si trova Lez1.cpp, tutti i file di inclusione e librerie sia dell'include e lib sia i file di \mfc\include\ e \mfc\lib............

va bhè comunque l'eseguibile viene creato e funziona.

E' strano, perchè l'opzione /I cerca nelle dir specificate i file che servono al linker, ma non viene creato il file Lez1.obj, forse sbaglio qualcosa e ne ho provate tante...............

qualcuno sà come fare per non dover copiare tutti i file
(kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib),
nella stessa dir di Lez1.cpp??


ciao

Loprix
23-09-2003, 16:22
:D :D :D :D :D

LukeHack
23-09-2003, 16:32
Originariamente inviato da Loprix
:D :D :D :D :D
:rotfl: :rotfl: :rotfl:

LukeHack
23-09-2003, 16:35
devi usare il #pragma
per es, supponi ti serve la libreria w2_32.lib (la winsock2 per intenderci)
allora poni sotto gli include

#pragma comment (lib,"ws2_32")

EASY!:D