编译错误
上次修改时间: 2018-01-06 16:55:21      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\assembly与反assembly\Win32汇编\      下一页
1. 提示:FirstWindow.asm(34) : error A2006: undefined symbol : lParam
原因:_ProcWinMain proc uses ebx edi esi hWnd,uMsg,wParam,lParm //原因是这里,这里的lParm应为lParam
invoke DefWindowProc,hWnd,uMsg,wParam,lParam //提示该行(34行)这里出错
2. 提示:310.asm(6): fatal error A1000: cannot open file : user32.lib
NMAKE : fatal error U1077: 'ml' : return code '0x1'
原因:include user32.lib 应改为:includelib user32.lib
3. 提示 : cannot open file "310.exe" 表有个名为310.exe的程序的运行, 生成时不能覆盖该文件
原因2: 在虚拟实体机目录到虚拟机下出来现这个, 完全复制到虚拟机下又正常
解决方法: 复制到虚拟目录的其它位置, 或把目录重命名
4. 提示: undefined symbol : szText 没有定义的符号szText, 实际上是因为前面定义的变量名叫szText1
error A2114: INVOKE argument type mismatch : argument : 2 调用参数类型不匹配: 参数 :2, 原因同上
5. 提示: 4.asm(291) : error A2006 : undefined symbol : ShellExecute
原因: 少了include shell32.inc和includelib shell32.lib, ShellExecute是这两个库的里
6. 提示: error A2206: missing operator in expression
原因: invoke LoadIcon hInstance, ICO_BIG的LoadIcon后少了逗号, 改为: invoke LoadIcon, hInstance, ICO_BIG
7. 提示: Icon.rc(7) : waring RC4005: 'IDM_EXIT' : redefinition
原因: 同目标下有2个rc文件, 删掉另一个, 或将另一个的扩展名改了也可以
8. 程序编译成功, 但运行程序后没有菜单, 需检查asm文件和rc文件的定义
#define IDM_MAIN 0x2000 //rc文件中的宏定义
IDM_MAIN menu discardable //我出错是这里和另外两处不一样, 把这里的IDR_MENU1改为和另外两种相同即可
IDM_MAIN equ 2000h //这是asm中的, 要和rc文件中两处一样
9. 提示: fatal error A1010: unmatched block nesting //不相配的块嵌套
原因: 这行里的endif前没有加点, 改为.endif即可
10. 编辑通过了, 运行程序不显示窗口, 及等多个问题
以及提示: error RC2104 : undefined keyword or key name: DS_MODALFRAME
最后原因: CONTROL "", -1, IDC_BMP, "Static", SS_BITMAP | WS_CHILD | WS_VISIBLE, 5, 5, 40, 95 //这句中多了一个参数
其默认参数应为: CONTROL 默认值, 控件ID, 所属类, 风格, x,y坐标, 宽, 高 . 在风格前应只有三个参数, 这有加空格有4个参数
11. 提示: error A2008: syntax error : in instruction //在指令 因: lea esi @szBuffer这句esi后加分号, 应改为lea esi,@szBuffer
12. 提示: error A2022: instruction operands must be the same size 指令操作数必须是相同大小
原因: mov ecx,ax 这句指令操作的大小不同, 应该改为movzx ecx,ax