VS2008 X64工程中嵌套汇编编译说明
Microsoft Visual Studio 2008 在X64工程中目前不支持内嵌汇编语言,现在折中的解决发方案大致有这两种:第一种:替换默认的编译器
将VS的默认编译器替换成 Intel Visual Fortran Composer XE 的。该编译器支持X64工程中内嵌汇编指令: __asm{ mov rax,rax } ,没有亲测,有兴趣的朋友可以自行搜索下载测试。
不过VS2008好像就无福消受该待遇了,VS2010以上的工程可以在这里设置:
第二种:将汇编剥离到单独的.asm文件中链接obj,在CPP文件中调用导出函数。
首先我们要设置 *.asm 文件的编译规则:
默认的只有前两项,其中*.asm 默认的编译器为: ml.exe。我们需要到规则目录中赋值一份该规则(路径为:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCProjectDefaults ),并将编译器修改为ml64.exe。规则文件这里修改为:CommandLine="ml64.exe /c /Ta"。然后选择我们添加的规则:
这里有修改好的规则,可以直接使用: ,放到 C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCProjectDefaults 目录中。
这样我们就可以编译该ASM文件,并且可以在VS工程中调用这些函数:
#include "inject.h"
#ifdef _DEBUG
#pragma comment(lib,"x64\\Debug\\Inject.obj")
#else
#pragma comment(lib,"x64\\Release\\Inject.obj")
#endif
int _tmain(int argc, _TCHAR* argv[])
{
NsInitDll();// ASM 定义的函数
return 0;
}
感谢分享! 大家注意,VS不同,设置也会有所不同! 还有一种方法,可以使用intel的编译器,安装在vs2008之类中,可以编译64位内联汇编, 非常有用和帮助 非常有用 楼主这个只针对vs2008吗
页:
[1]