vs开发64位程序无法使用内联汇编,需要将汇编放到一个单独文件中编译链接。
步骤如下:
- 生成汇编代码。以asm.asm为例,以下是模板:
;64位汇编程序模板 (Template)
;声明一个ExitProcess函数
ExitProcess PROTO
.data
;在这里声明变量
.code
myAsmTest PROC
;这里写自己的代码
mov rcx,0
call ExitProcess
myAsmTest ENDP
END
- 在asm.asm文件上点击右键,在弹出菜单中点击“属性”,然后点击“常规”,“从生成中排除”点击“否”, “项类型”选择“自定义生成工具”,最后点击”确定“或者”应用“:
接着,点击”自定义生成工具“,在”命令行“中输入如下命令:
ml64 /Fo $(IntDir)%(fileName).obj /c %(fileName).asm
在”输出“中输入如下命令:
$(IntDir)%(fileName).obj
最后点击确定。
- 将汇编函数导出。如下所示:
extern "C" int myAsmTest(int);
- 如果工程的主程序main函数也在汇编中,那么还需要修改工程的入口点,请自行百度VS修改程序入口点的设置。
接下来,汇编文件就可以单独编译了:
参考链接:
- https://blog.csdn.net/freeking101/article/details/104623548
- https://blog.csdn.net/zyhse/article/details/134063519