鱼C论坛

 找回密码
 立即注册
查看: 319|回复: 1

API

[复制链接]
发表于 2023-11-27 19:23:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. .386
  2. .model flat,stdcall
  3. .stack 4096

  4. Include Irvine32.inc

  5. MessageBox PROTO, hWnd:dword, lpText:dword, lpCaption:dword, uType:dword


  6. .data
  7. lptext BYTE "消息",0
  8. lpcaption BYTE "标题",0

  9. .code
  10. main PROC
  11.    
  12.     invoke MessageBox, 0, OFFSET lptext, OFFSET lpcaption,0

  13.     exit   
  14. main ENDP
  15. END  main
复制代码


系统提示错误信息:
严重性        代码        说明        项目        文件        行        禁止显示状态
错误        A2111        conflicting parameter definition        hb32        D:\ASM\hb32\hb32\1.asm        7       


严重性        代码        说明        项目        文件        行        禁止显示状态
错误        MSB3721        命令“ml.exe /c /nologo /Zi /Fo"Debug\1.obj" /I "C:\irvine32" /W3 /errorReport:prompt  /Ta1.asm”已退出,返回代码为 1。        hb32        C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\BuildCustomizations\masm.targets        70       

??


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-27 19:23:15 | 显示全部楼层
这个错误是由于在代码中重复定义了MessageBox的参数。在使用inovke调用API函数时,参数需要按照规定的顺序,以及正确的参数类型传递给函数。

修复该错误的方法是:
1. 确保你引入了正确的API头文件,例如windows.inc或kernel32.inc等。
2. 确认invoke函数调用的参数顺序和类型与API函数定义一致。根据你的代码,MessageBox函数的参数依次为:hWnd、lpText、lpCaption、uType。

以下是一个修复后的代码示例:
  1. include windows.inc
  2. .data
  3. lptext BYTE "消息",0
  4. lpcaption BYTE "标题",0
  5. .code
  6. main PROC
  7.     invoke MessageBox, 0, ADDR lptext, ADDR lpcaption, 0
  8.     exit
  9. main ENDP
  10. END main
复制代码

在这个示例中,我使用了`windows.inc`头文件,并且将`MessageBox`函数的参数类型更改为正确的地址类型(通过`ADDR`关键字获取字符串的地址)。

希望这能解决你的问题!如果还有其他问题,请随时提问。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 07:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表