Компиляция проги в MASM32 v6

Тема в разделе "WASM.BEGINNERS", создана пользователем Nafanya, 26 июл 2006.

  1. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    Подскажите пожалуйста как правильно прогу скомпилировать?
    Значит поставил я masm32 . скачал с вашего сайта туториалы Iczelion'a на русском, стал потихоньку читать ,вникать! 1 и второй урок прошёл на ура. Компилировал в командной строке ml /c /coff /Cp myprog.asm и link /subsystem:windows /libpath:c:\masm32\lib myprog.obj . (myprog.asm в c:\masm32\bin лежал) Получался exeшник . Запускал всё работало. Дошёл до 3-тьего урока и всё остановилось. Компилировал также , а компилятор выдаёт кучу ошибок. Обьектный файл не создаётся! Вот исходник (копировал из тотуриала)

    .386
    .model flat,stdcall

    option casemap:none
    include \masm32\include\windows.inc
    include \masm32\include\user32.inc
    includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
    include \masm32\include\kernel32.inc
    includelib \masm32\lib\kernel32.lib


    WinMain proto :lol: WORD,:lol: WORD,:lol: WORD,:lol: WORD

    .DATA ; initialized data

    ClassName db "SimpleWinClass",0 ; Имя нашего класса окна
    AppName db "Our First Window",0 ; Имя нашего окна


    .DATA? ; Hеиницилизируемые данные
    hInstance HINSTANCE ? ; Хэндл нашей программы
    CommandLine LPSTR ?
    .CODE ; Здесь начинается наш код
    start:
    invoke GetModuleHandle, NULL ; Взять хэндл программы
    ; Под Win32, hmodule==hinstance mov hInstance,eax
    mov hInstance,eax

    invoke GetCommandLine ; Взять командную строку. Вы не обязаны
    вызывать эту функцию ЕСЛИ ваша программа не обрабатывает командную строку.
    mov CommandLine,eax
    invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; вызвать основную функцию
    invoke ExitProcess, eax ; Выйти из программы.
    ; Возвращаемое значение, помещаемое в eax, берется из WinMain'а.

    WinMain proc

    hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:lol: WORD
    LOCAL wc:WNDCLASSEX ; создание локальных переменных в стеке
    LOCAL msg:MSG
    LOCAL hwnd:HWND


    mov wc.cbSize,SIZEOF WNDCLASSEX ; заполнение структуры wc
    mov wc.style, CS_HREDRAW or CS_VREDRAW
    mov wc.lpfnWndProc, OFFSET WndProc
    mov wc.cbClsExtra,NULL

    mov wc.cbWndExtra,NULL
    push hInstance
    pop wc.hInstance
    mov wc.hbrBackground,COLOR_WINDOW+1

    mov wc.lpszMenuName,NULL
    mov wc.lpszClassName,OFFSET ClassName
    invoke LoadIcon,NULL,IDI_APPLICATION
    mov wc.hIcon,eax

    mov wc.hIconSm,eax
    invoke LoadCursor,NULL,IDC_ARROW
    mov wc.hCursor,eax
    invoke RegisterClassEx, addr wc ; регистрация нашего класса окна
    invoke CreateWindowEx,NULL,\
    ADDR ClassName,\
    ADDR AppName,\
    WS_OVERLAPPEDWINDOW,\
    CW_USEDEFAULT,\
    CW_USEDEFAULT,\
    CW_USEDEFAULT,\
    CW_USEDEFAULT,\
    NULL,\
    NULL,\
    hInst,\
    NULL
    mov hwnd,eax

    invoke ShowWindow, hwnd,CmdShow ; отобразить наше окно на десктопе
    invoke UpdateWindow, hwnd ; обновить клиентскую область

    .WHILE TRUE ; Enter message loop
    invoke GetMessage, ADDR msg,NULL,0,0
    .BREAK .IF (!eax)
    invoke TranslateMessage, ADDR msg
    invoke DispatchMessage, ADDR msg
    .ENDW
    mov eax,msg.wParam ; сохранение возвращаемого значения в eax
    ret

    WinMain endp

    WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

    .IF uMsg==WM_DESTROY ; если пользователь закрывает окно
    invoke PostQuitMessage,NULL ; выходим из программы
    .ELSE
    invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Дефаултная функция обработки окна
    ret
    .ENDIF
    xor eax,eax

    ret
    WndProc endp


    end start



    Компилятор пишет 15 раз подряд "Undefined symbol :wc"
    "invalid character in file" "conflicting parameter difinition" "syntax error :hinstanсe" и т.д.
    Ну в общем я подумал что в туториале ошибок быть не должно и что я сам что то неправильно делаю! Думал версия масма не та скачал MASM32v7! Компильнул. Всё та же куча ошибок!! Подскажите пожалуйста что я не так делаю?????????
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Nafanya
    Плохо копировал. Лучше бы сам набрал.
     
  3. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    Подскажите в чём ошибка???? Вроде всё как в туториале а не пашет??????
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Nafanya
    Вам не кажется, что вот эта строчка выглядит подозрительно?

    А ошибки в туториалах есть, чтобы новички действительно вникали в код, а не копипастили вслепую и двигались дальше.