Помогите с компиляцией

Тема в разделе "WASM.BEGINNERS", создана пользователем Uni_HK, 9 сен 2008.

  1. Uni_HK

    Uni_HK New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2008
    Сообщения:
    8
    Нашёл на сайте СТАТЬИ ⇒ Уроки Iczelion'а. Пытаюсь разобраться. Набрал код программы из 3 урока.
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3.  
    4. option casemap:none
    5. include windows.inc
    6. include user32.inc
    7. includelib user32.lib ; calls to functions in user32.lib and kernel32.lib
    8. include kernel32.inc
    9. includelib kernel32.lib
    10.  
    11.  
    12. WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
    13.  
    14. .DATA                           ; initialized data
    15.  
    16. ClassName db "SimpleWinClass",0 ; Имя нашего класса окна
    17. AppName db "Our First Window",0 ; Имя нашего окна
    18.  
    19.  
    20. .DATA?                  ; Hеиницилизиpуемые данные
    21. hInstance HINSTANCE ?   ; Хэндл нашей пpогpаммы
    22. CommandLine LPSTR ?
    23. .CODE                ; Здесь начинается наш код
    24. start:
    25. invoke GetModuleHandle, NULL ; Взять хэндл пpогpаммы
    26.                              ; Под Win32, hmodule==hinstance mov hInstance,eax
    27. mov hInstance,eax
    28.  
    29. invoke GetCommandLine   ; Взять командную стpоку. Вы не обязаны
    30.            вызывать эту функцию ЕСЛИ ваша пpогpамма не обpабатывает командную стpоку.
    31. mov CommandLine,eax
    32. invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT  ; вызвать основную функцию
    33. invoke ExitProcess, eax ; Выйти из пpогpаммы.
    34.                         ; Возвpащаемое значение, помещаемое в eax, беpется из WinMain'а.
    35.  
    36. WinMain proc
    37.  
    38. hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    39.     LOCAL wc:WNDCLASSEX      ; создание локальных пеpеменных в стеке
    40.     LOCAL msg:MSG
    41.     LOCAL hwnd:HWND
    42.  
    43.  
    44.     mov   wc.cbSize,SIZEOF WNDCLASSEX   ; заполнение стpуктуpы wc
    45.     mov   wc.style, CS_HREDRAW or CS_VREDRAW
    46.     mov   wc.lpfnWndProc, OFFSET WndProc
    47.     mov   wc.cbClsExtra,NULL
    48.  
    49.     mov   wc.cbWndExtra,NULL
    50.     push  hInstance
    51.     pop   wc.hInstance
    52.     mov   wc.hbrBackground,COLOR_WINDOW+1
    53.  
    54.     mov   wc.lpszMenuName,NULL
    55.     mov   wc.lpszClassName,OFFSET ClassName
    56.     invoke LoadIcon,NULL,IDI_APPLICATION
    57.     mov   wc.hIcon,eax
    58.  
    59.     mov   wc.hIconSm,eax
    60.     invoke LoadCursor,NULL,IDC_ARROW
    61.     mov   wc.hCursor,eax
    62.     invoke RegisterClassEx, addr wc  ; pегистpация нашего класса окна
    63.     invoke CreateWindowEx,NULL,\
    64.                 ADDR ClassName,\
    65.                 ADDR AppName,\
    66.                 WS_OVERLAPPEDWINDOW,\
    67.                 CW_USEDEFAULT,\
    68.                 CW_USEDEFAULT,\
    69.                 CW_USEDEFAULT,\
    70.                 CW_USEDEFAULT,\
    71.                 NULL,\
    72.                 NULL,\
    73.                 hInst,\
    74.                 NULL
    75.     mov   hwnd,eax
    76.  
    77.     invoke ShowWindow, hwnd,CmdShow ; отобpазить наше окно на десктопе
    78.     invoke UpdateWindow, hwnd ; обновить клиентскую область
    79.  
    80.     .WHILE TRUE   ; Enter message loop
    81.        invoke GetMessage, ADDR msg,NULL,0,0
    82.     .BREAK .IF (!eax)
    83.        invoke TranslateMessage, ADDR msg
    84.        invoke DispatchMessage, ADDR msg
    85.     .ENDW
    86.      mov     eax,msg.wParam ; сохpанение возвpащаемого значения в eax
    87.      ret
    88.  
    89. WinMain endp
    90.  
    91. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    92.  
    93.     .IF uMsg==WM_DESTROY            ; если пользователь закpывает окно
    94.         invoke PostQuitMessage,NULL ; выходим из пpогpаммы
    95.     .ELSE
    96.         invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Дефаултная функция обpаботки окна
    97.         ret
    98.     .ENDIF
    99.     xor eax,eax
    100.  
    101.     ret
    102. WndProc endp
    103.  
    104.  
    105. end start
    При компиляции выдаёт ошибки:
    Код (Text):
    1. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(47) : error A2111: conflicting parameter definition
    2. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(49) : error A2008: syntax error : HINSTANCE
    3. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(50) : error A2012: PROC, MACRO, or macro repeat directive must precede LOCAL
    4. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(51) : error A2012: PROC, MACRO, or macro repeat directive must precede LOCAL
    5. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(52) : error A2012: PROC, MACRO, or macro repeat directive must precede LOCAL
    6. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(73) : error A2006: undefined symbol : wc
    7. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(73) : error A2114: INVOKE argument type mismatch : argument : 1
    8. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(88) : error A2006: undefined symbol : CmdShow
    9. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(88) : error A2114: INVOKE argument type mismatch : argument : 2
    10. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(88) : error A2006: undefined symbol : hwnd
    11. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(88) : error A2114: INVOKE argument type mismatch : argument : 1
    12. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(89) : error A2006: undefined symbol : hwnd
    13. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(89) : error A2114: INVOKE argument type mismatch : argument : 1
    14. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(92) : error A2006: undefined symbol : msg
    15. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(92) : error A2114: INVOKE argument type mismatch : argument : 1
    16. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(94) : error A2006: undefined symbol : msg
    17. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(94) : error A2114: INVOKE argument type mismatch : argument : 1
    18. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(95) : error A2006: undefined symbol : msg
    19. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(95) : error A2114: INVOKE argument type mismatch : argument : 1
    20. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(55) : error A2006: undefined symbol : wc
    21. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(56) : error A2006: undefined symbol : wc
    22. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(57) : error A2006: undefined symbol : wc
    23. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(58) : error A2006: undefined symbol : wc
    24. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(60) : error A2006: undefined symbol : wc
    25. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(62) : error A2006: undefined symbol : wc
    26. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(63) : error A2006: undefined symbol : wc
    27. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(65) : error A2006: undefined symbol : wc
    28. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(66) : error A2006: undefined symbol : wc
    29. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(68) : error A2006: undefined symbol : wc
    30. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(70) : error A2006: undefined symbol : wc
    31. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(72) : error A2006: undefined symbol : wc
    32. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(86) : error A2006: undefined symbol : hwnd
    33. D:\1_My_documents\2_Programming\3_Заготовки\Zagotovka2.asm(98) : error A2006: undefined symbol : msg
    Помогите разобраться в чем дело. =)
     
  2. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    там где процедура винмайн, следующую за ней строку подыми
     
  3. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    набрал ты или вставил - не знаю, но у тебя строки попереносились:
    1.после invoke GetCommandLine строка содержит коменты, не отделенные ";"

    2.параметры WinMain proc далеко уехали - должны, наверное, хотя бы начаться в той же строке.

    после устранения этого предъявленный код успешно скомпилировался
     
  4. Uni_HK

    Uni_HK New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2008
    Сообщения:
    8
    Большое спасибо. Работает.
    =) =) =)