鱼C论坛

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

API

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

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

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

x
.386
.model flat,stdcall
.stack 4096

Include Irvine32.inc

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


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

.code
main PROC
    
    invoke MessageBox, 0, OFFSET lptext, OFFSET lpcaption,0

    exit    
main ENDP
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。

以下是一个修复后的代码示例:
include windows.inc.datalptext BYTE "消息",0lpcaption BYTE "标题",0.codemain PROC    invoke MessageBox, 0, ADDR lptext, ADDR lpcaption, 0    exitmain ENDPEND main
在这个示例中,我使用了`windows.inc`头文件,并且将`MessageBox`函数的参数类型更改为正确的地址类型(通过`ADDR`关键字获取字符串的地址)。

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-4 01:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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