众所周知从vs2005开始微软就不支持在c++中内联汇编了。会出现如下的错误 如果我们要在程序中内联汇编的话就要把汇编单独编译成一个文件,然后自定义规则生成obj,在链接的时候添加进去。 网上有32位的汇编与C++相互调用的例子,今天说的是X64的,其实也就是有一点差别。 步骤如下: 1.编写一个ASM文件 extern MessageBoxA:proc .data text db 'Hello x64!', 0 caption db 'My First x64 Application', 0 .code MyMessage proc xor r9,r9 lea r8, caption lea rdx, text xor rcx,rcx call MessageBoxA ret MyMessage endp end 要注意X64汇编与X32的不同,尤其是参数的传递,这方面可以参考论坛里面的X64教程。 2.用VS2008创建一个项目,然后把ASM添加进去。 3.修改自定义规则如下。 4.编写调用函数 #include "stdafx.h" #include <stdio.h> #include <windows.h> extern "C" int __stdcall MyMessage (); int main(int argc, _TCHAR* argv[]) { MyMessage(); system("pause"); return 0; } 5编译链接 6.执行结果 不足之处请大家多多指教
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
众所周知从vs2005开始微软就不支持在c++中内联汇编了......