Ночи доброй.Может,кто прояснит ситуацию,почему CALL идёт с ошибкой: Code: .386 .model flat,stdcall includelib C:\winasm\masm32\lib\user32.lib includelib c:\winasm\masm32\lib\kernel32.lib include C:\winasm\masm32\include\user32.inc include c:\winasm\masm32\include\kernel32.inc .data message db "I`ve got a power!",0 title db "This is the title of my program",0 .code start: push 0 push offset message push offset title push 0 call MessageBox@16 end start end; C:\winasm\masm32\bin\ML /c /coff /Cp /nologo /I"C:\winasm\masm32\include" "C:\winasm\Projects\aaa.asm" Assembling: C:\winasm\Projects\aaa.asm C:\winasm\Projects\aaa.asm(23) : error A2008: syntax error : title C:\winasm\Projects\aaa.asm(22) : error A2006: undefined symbol : message C:\winasm\Projects\aaa.asm(25) : error A2006: undefined symbol : MessageBox@16 C:\winasm\masm32\bin\Link @"C:\winasm\Projects\link.war" Microsoft (R) Incremental Linker Version 5.12.8078 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 "/LIBPATH:C:\winasm\masm32\lib" "C:\winasm\Projects\aaa.obj" "/OUT:C:\winasm\Projects\aaa.exe" LINK : fatal error LNK1181: cannot open input file "C:\winasm\Projects\aaa.obj" Make finished. 4 error(s) occured INVOKE норм работает... Среда: WinAsm Проект: Standart EXE (win32)
Хм.LINK ругается только на символ @...но без него всё работает.т.е. учёт количества и размера параметров происходит без не нужных затрат.С чего бы это ?
2Welemir С того это, что в заголовочных файлах прописан прототип функции. Поэтому инвойк работает нормально. А в той модели, в которой ты вызывал функцию, подсчет параметров для ассемблера вообще не нужен, тк ты всем управляешь. И да, Гарик прав =)
возможно в вашей версии масма были определены они так. В реальности из user32.dll экспортируются только MessageBoxA/W. Поищите в user32.inc если интересно на что указывает MessageBox (это будет либо A либо W версия функции)