-
问题内容:如何将vc和一个用masm程序编译的obj链接起来呢?
- 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=4657778
- 所属论坛:汇编语言
审核组:其他开发语言
- 提问者:TaiJi1985
解决者:zara
- 感谢:zara fhb13
- 关键字:其他开发语言 汇编语言 编译 code ret far 楼主 简写 masm swi
- 答案:
main.cpp
---------------------------------
extern "C" void SWITCH();
void main()
{
SWITCH();
}
---------------------------------
switch.asm:
.386
code segment
assume cs:code
SWITCH proc far
mov eax,eax
ret
SWITCH endp
code ends
end
-----------------------------
使用 masm32编译的话,可以和vc链接成功,但是,运行错误,就是ret那个地方
ret被编译成了retf,运行到这里就会出错。
试过ret 4 ret 6 ret 8 ret 12 都不行。
请问高手如何解决。
我又使用masm6.11编译,结果和vc链接不到一起。郁闷.
--------------
请高手指教!
---------------------------------------------------------------
ret 只是重置 EIP, retf 重置 CS:EIP. 对没有声明调用类型的子程, 编译程序缺省指定为 near, 所以返回的 ret 就是 RETN (return near); 声明为 FAR 类型的, ret 就是 RETF (return far). 一般将 RETN 简写为 RET
---------------------------------------------------------------
masm6.11以前版本不支持COFF的OBJ格式
不过masm6.11好像可以支持COFF,楼主看看你的编译选项里面有没有coff
- 评价:
给朵鲜花(0)
扔个鸡蛋(0)