Windows 64位和32位不兼容

时间:2013-03-22 18:51:51

标签: windows 64-bit 32bit-64bit 32-bit

我知道64位应用程序需要64位Windows。

哪种c / c ++代码仅适用于64位或32位? 修改:I have found it here

我可以在运行时确定进程字大小:就像我将有32位应用程序,如果OS是32位或64位则返回,然后运行具有正确字大小的子/新进程。

2 个答案:

答案 0 :(得分:3)

您可以使用GetNativeSystemInfo查看您的系统是32位还是64位。例如,你可以这样做:

typedef void (WINAPI *GetNativeSystemInfo_t)(LPSYSTEM_INFO lpSystemInfo);

BOOL IsSystem64Bit()
{
    HANDLE kernel32 = LoadLibrary("kernel32.dll");
    SYSTEM_INFO si;

    GetNativeSystemInfo_t GetNativeSystemInfoPtr
        = (GetNativeSystemInfo_t)GetProcAddress(kernel32, "GetNativeSystemInfo");

    if (GetNativeSystemInfoPtr == NULL)
        return FALSE;

    GetNativeSystemInfoPtr(&si);
    return (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64);
}

动态解析函数的原因是因为它在XP之前的Windows版本中不存在。 (在那些版本的Windows上,我们已经知道系统不是64位)

答案 1 :(得分:-1)

我不确定Windows,因此显然这会有所帮助,但在Linux上,您可以在运行时确定字大小。 long int将是单词大小。在64位Linux上,32位Linux上的64位和32位长。

所以,这看起来真的很愚蠢和不一致,但你可以做类似

的事情
 char ws[3];
 sprintf(ws, "%d", sizeof(long));
 fprintf(stderr, "%s\n", ws);

然后,您可以将ws与不同的值进行比较,以查看字数是多少。我确信Windows具有可比较的基本类型,可以帮助您判断字大小。