Есть маленький проект , хотелось бы отказаться от всяких тяжёлых IDE (таких как в VC)) , и соберать по старинке через bat файл . Такой принцип работал для asmовских проектов идеально , а для С++ пошли какие то проблемы с cmd.exe , скорее всего я где то ошибся в bat файле , прошу наставить на путь истинный work.c Код (Text): // work.c #pragma comment(linker, "/nodefaultlib:libcmt") #pragma comment(lib, "msvcrt.lib") #define _CRT_SECURE_NO_DEPRECATE #include <windows.h> #include <stdio.h> #define ID_DIALOG 1000 #define IDB_EXIT 2000 #define ID_MENU 3000 #define IDM_EXIT 4000 #define IDM_ABOUT 5000 // Глобальные переменные // ######################################################### HMODULE hInstance; HWND HDlg; // Оконная процедура // ######################################################### LRESULT CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char cBuff[10]; int i; switch (message) { case WM_INITDIALOG: { HDlg=hDlg; return TRUE; } case WM_COMMAND: { switch(LOWORD(wParam)) { case(IDM_ABOUT): { srand(GetTickCount()); i = rand(); sprintf(cBuff,"%u",i); MessageBox(hDlg,cBuff,"Random",MB_OK); return TRUE; } case(IDM_EXIT): case(IDB_EXIT): { EndDialog(hDlg,0); return TRUE; } } break; } case WM_CLOSE: { EndDialog(hDlg,0); return TRUE; } break; } return FALSE; } // Точка входа // ######################################################### int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) { DialogBox(hInstance,MAKEINTRESOURCE(ID_DIALOG),0,(DLGPROC)DlgProc); ExitProcess(0); } work.bat Код (Text): @ECHO OFF SET BIN_PATH="C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\" SET INC_PATH1="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include" SET INC_PATH2="C:\Program Files\Microsoft Visual Studio 9.0\VC\include" SET LIB_PATH1="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib" SET LIB_PATH2="C:\Program Files\Microsoft Visual Studio 9.0\VC\lib" SET CL_OPT=/GR- /TP /c /GS- /I%INC_PATH1% /I%INC_PATH2% SET RC_OPT=/I%INC_PATH1% SET LINK_LIB=kernel32.lib user32.lib comctl32.lib shell32.lib comdlg32.lib gdiplus.lib shlwapi.lib SET LINK_OPT=/SUBSYSTEM:WINDOWS /LIBPATH:%LIB_PATH1% /LIBPATH:%LIB_PATH2% %LINK_LIB% echo ########################### echo # Stage 0 - Optimize C++ # echo ########################### %BIN_PATH%cl.exe %CL_OPT% work.c echo ########################### echo # Stage 1 - Resource Link # echo ########################### %BIN_PATH%rc.exe /I%INC_PATH1% work.rc echo ########################### echo # Stage 2 - Link Main ExE # echo ########################### %BIN_PATH%link.exe %LINK_OPT% work.obj work.res del work.obj del work.res PAUSE work.rc Код (Text): // work.rc #include "windows.h" #define ID_DIALOG 1000 #define IDB_EXIT 2000 #define ID_MENU 3000 #define IDM_EXIT 4000 #define IDM_ABOUT 5000 ID_MENU MENU DISCARDABLE BEGIN POPUP "&File" BEGIN MENUITEM "E&xit",IDM_EXIT END POPUP "&Help" BEGIN MENUITEM "&About ...",IDM_ABOUT END END ID_DIALOG DIALOG 0, 0, 397, 231 STYLE DS_CENTER | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX MENU ID_MENU CAPTION "Диалог" FONT 8, "MS Sans Serif" BEGIN PUSHBUTTON "Exit",IDB_EXIT,340,210,50,14 END Вывод bat : Код (Text): ########################### # Stage 0 - Optimize C++ # ########################### Оптимизирующий 32-разрядный компилятор Microsoft (R) C/C++ версии 15.00.30729.01 для 80x86 (C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. work.c ########################### # Stage 1 - Resource Link # ########################### ""C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\"rc.exe" не является внутр енней или внешней командой, исполняемой программой или пакетным файлом. ########################### # Stage 2 - Link Main ExE # ########################### Microsoft (R) Incremental Linker Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved. LINK : fatal error LNK1181: не удается открыть входной файл "work.res" Откуда он там ковычки берёт ? 0_0
Swat2k неправда. по документации set присваивает переменной _всё_ после знака "=". Код (Text): D:\Documents and Settings\Great.NOTEBOOK>set Var=D:\Program Files\Microsoft Visual Studio D:\Documents and Settings\Great.NOTEBOOK>echo %Var% D:\Program Files\Microsoft Visual Studio D:\Documents and Settings\Great.NOTEBOOK> убери кавычки.)
Убрал кавычки у путей Код (Text): ########################### # Stage 0 - Optimize C++ # ########################### "C:\Program" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. ########################### # Stage 1 - Resource Link # ########################### "C:\Program" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. ########################### # Stage 2 - Link Main ExE # ########################### "C:\Program" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Некатит ( Заменил пути с пробелами на их аналоги . Код (Text): @ECHO OFF SET BIN_PATH=C:\PROGRA~1\MICROS~1.0\VC\bin\ SET INC_PATH1=C:\PROGRA~1\MIA713~1\Windows\v6.0A\Include SET INC_PATH2=C:\PROGRA~1\MICROS~1.0\VC\include SET LIB_PATH1=C:\PROGRA~1\MIA713~1\Windows\v6.0A\Lib SET LIB_PATH2=C:\PROGRA~1\MICROS~1.0\VC\lib SET CL_OPT=/GR- /TP /c /GS- /I%INC_PATH1% /I%INC_PATH2% SET RC_OPT=/I%INC_PATH1% SET LINK_LIB=kernel32.lib user32.lib comctl32.lib shell32.lib comdlg32.lib gdiplus.lib shlwapi.lib SET LINK_OPT=/SUBSYSTEM:WINDOWS /LIBPATH:%LIB_PATH1% /LIBPATH:%LIB_PATH2% %LINK_LIB% echo ########################### echo # Stage 0 - Optimize C++ # echo ########################### %BIN_PATH%cl.exe %CL_OPT% work.c echo ########################### echo # Stage 1 - Resource Link # echo ########################### %BIN_PATH%rc.exe /I%INC_PATH1% work.rc echo ########################### echo # Stage 2 - Link Main ExE # echo ########################### %BIN_PATH%link.exe %LINK_OPT% work.obj work.res del work.obj del work.res PAUSE Вывод : Код (Text): ########################### # Stage 0 - Optimize C++ # ########################### Оптимизирующий 32-разрядный компилятор Microsoft (R) C/C++ версии 15.00.30729.01 для 80x86 (C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. work.c ########################### # Stage 1 - Resource Link # ########################### "C:\PROGRA~1\MICROS~1.0\VC\bin\rc.exe" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. ########################### # Stage 2 - Link Main ExE # ########################### Microsoft (R) Incremental Linker Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved. LINK : fatal error LNK1181: не удается открыть входной файл "work.res"
Да не надо на аналоги заменять. Ты кавычки проставил не там, где надо. А там, где не надо, не проставил. Кавычки при вызове нужны. "%BIN_PATH%\cl.exe" Все перепутал, что можно было)
Код (Text): @ECHO OFF SET BIN_PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC\bin SET INC_PATH1=C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include SET INC_PATH2=C:\Program Files\Microsoft Visual Studio 9.0\VC\include SET LIB_PATH1=C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib SET LIB_PATH2=C:\Program Files\Microsoft Visual Studio 9.0\VC\lib SET CL_OPT=/GR- /TP /c /GS- /I%INC_PATH1% /I%INC_PATH2% SET RC_OPT=/I%INC_PATH1% SET LINK_LIB=kernel32.lib user32.lib comctl32.lib shell32.lib comdlg32.lib gdiplus.lib shlwapi.lib SET LINK_OPT=/SUBSYSTEM:WINDOWS /LIBPATH:%LIB_PATH1% /LIBPATH:%LIB_PATH2% %LINK_LIB% echo ########################### echo # Stage 0 - Optimize C++ # echo ########################### "%BIN_PATH%\cl.exe" %CL_OPT% work.c echo ########################### echo # Stage 1 - Resource Link # echo ########################### "%BIN_PATH%\rc.exe" /I%INC_PATH1% work.rc echo ########################### echo # Stage 2 - Link Main ExE # echo ########################### "%BIN_PATH%\link.exe" %LINK_OPT% work.obj work.res del work.obj del work.res PAUSE Так тоже не хочет ( Output Код (Text): ########################### # Stage 0 - Optimize C++ # ########################### Оптимизирующий 32-разрядный компилятор Microsoft (R) C/C++ версии 15.00.30729.01 для 80x86 (C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. Microsoft c1xx : fatal error C1083: Не удается открыть файл источник: Files\Microsoft: No such file or directory Include c1xx : fatal error C1083: Не удается открыть файл источник: SDKs\Windows\v6.0A\I nclude: No such file or directory Microsoft c1xx : fatal error C1083: Не удается открыть файл источник: Files\Microsoft: No such file or directory Visual c1xx : fatal error C1083: Не удается открыть файл источник: Visual: No such file or directory Studio c1xx : fatal error C1083: Не удается открыть файл источник: Studio: No such file or directory include c1xx : fatal error C1083: Не удается открыть файл источник: 9.0\VC\include: No s uch file or directory work.c work.c(7) : fatal error C1083: Не удается открыть файл include: windows.h: No su ch file or directory Создание кода... ########################### # Stage 1 - Resource Link # ########################### ""C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\rc.exe"" не является внутр енней или внешней командой, исполняемой программой или пакетным файлом. ########################### # Stage 2 - Link Main ExE # ########################### Microsoft (R) Incremental Linker Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved. LINK : fatal error LNK1181: не удается открыть входной файл "Files\Microsoft.obj"
Слушай ну я думал ты сам догадаешься, что надо исправить _НЕ ТОЛЬКО_ там, где я указал. Сам подумай - для -I%INC_PATH% подставляется строка без кавычек - значит они там тоже нужны. А так же в опциях RC и линкера, где подключаются каталоги аналогичным образом. Мозги включать иногда полезно, нэ?