32位C++;到64位C++;使用VisualStudio2010 我最近想把32位C++项目转换成64位,但我还是第一次尝试。你能指出任何建议/检查清单/点时,在32位的C++转换为64位的VS(如转换32位Delphi到64位)。

32位C++;到64位C++;使用VisualStudio2010 我最近想把32位C++项目转换成64位,但我还是第一次尝试。你能指出任何建议/检查清单/点时,在32位的C++转换为64位的VS(如转换32位Delphi到64位)。,c++,64-bit,C++,64 Bit,微软的编译器(无论如何,其中一些)有一个标志,指出至少一些常见的问题,在这些问题中,代码可能需要修改才能作为64位代码工作 就您的GetVendorID\u 0函数而言,我会使用Microsoft的函数,如下所示: int GetVendorID_0(char *pVendorID, int iLen) { DWORD data[4]; _cpuid(0, data); memcpy(pVendorID, data+1, 12); return data[0]

微软的编译器(无论如何,其中一些)有一个标志,指出至少一些常见的问题,在这些问题中,代码可能需要修改才能作为64位代码工作

就您的
GetVendorID\u 0
函数而言,我会使用Microsoft的函数,如下所示:

int GetVendorID_0(char *pVendorID, int iLen) { 
    DWORD data[4];

    _cpuid(0, data);
    memcpy(pVendorID, data+1, 12);
    return data[0];
}
这显然不能取代内联汇编语言的所有实例。你的选择相当简单(虽然不一定容易)。一个是找到这样一个内在的工作。另一种是将汇编代码移到单独的文件中,并将其与C++中的代码链接(并学习X64调用约定)。第三种方法是简单地放弃你现在正在做的事情,用更具可移植性的代码编写最接近的等效代码。

微软的编译器(无论如何,其中一些编译器)有一个标志,指出至少一些常见的问题,在这些问题中,代码可能需要修改才能像64位代码一样工作

就您的
GetVendorID\u 0
函数而言,我会使用Microsoft的函数,如下所示:

int GetVendorID_0(char *pVendorID, int iLen) { 
    DWORD data[4];

    _cpuid(0, data);
    memcpy(pVendorID, data+1, 12);
    return data[0];
}

这显然不能取代内联汇编语言的所有实例。你的选择相当简单(虽然不一定容易)。一个是找到这样一个内在的工作。另一种是将汇编代码移到单独的文件中,并将其与C++中的代码链接(并学习X64调用约定)。第三种方法是简单地放弃您现在正在做的事情,用更可移植的代码编写最接近的等效代码。

AFAIK MS的x64编译器不支持使用内联汇编程序。AFAIK MS的x64编译器不支持使用内联汇编程序。