专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 汇编语言

START与STDCALL?该如何处理

发布时间:2010-06-14 15:48:09 文章来源:www.iduyao.cn 采编人员:星星草
START与STDCALL?
.386
.model flat
.code
start:
mov eax,0a9d7c6e5h
sal eax,4
ret
end start

程序如上

ml /c /coff ..\myprogram\test.asm
link /subsystem:console test.obj编译连接

在LINK时报error LNK2001: unresolved external symbol _start

怎么回事?

后来在。MODEL FLAT后加了个,STDCALL就行了,又是怎么回事,分析下。。。。

------解决方案--------------------
model 后面加的STDCALL意思是该文件中的所有函数调用模式都为STDCALL(除非另行指定)

,显然连接器希望看到一个以STDCALL方式定义的符号,所以你后来加上STDCALL

link正确找到了符号。
------解决方案--------------------
这里的STDCALL就定义编译的时候的格式,会将上面的start编译成_Start;不然linker就找不到相应的函数开始地方
------解决方案--------------------
32位Windows程序只能采用平展模式(Flat),因为Win32程序使用一个连续的4GB主存空间。由于利用了应用程序接口API,其参数传递采用标准调用方式(Stdcall),所以存储模式伪指令应该是“.model flat,stdcall”。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: