Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在运行时加载32位和64位的DLL_C++ - Fatal编程技术网

C++ 在运行时加载32位和64位的DLL

C++ 在运行时加载32位和64位的DLL,c++,C++,我需要在运行时加载32位和64位的DLL。如何确定32位和64位 谢谢, kam在Windows上使用函数。在Windows上使用函数。对于Windows,可以使用以下函数 #include<Windows.h> BOOL IsX86() { char proc[9]; GetEnvironmentVariable("PROCESSOR_ARCHITEW6432", proc, 9); if (lstrcmpi(proc, "AMD64") == 0)

我需要在运行时加载32位和64位的DLL。如何确定32位和64位

谢谢,
kam在Windows上使用函数。

在Windows上使用函数。

对于Windows,可以使用以下函数

#include<Windows.h>
BOOL IsX86()
{
    char proc[9];

    GetEnvironmentVariable("PROCESSOR_ARCHITEW6432", proc, 9);

    if (lstrcmpi(proc, "AMD64") == 0)
    {
        return FALSE;
    }

    return TRUE;
}
#包括
BOOL IsX86()
{
char-proc[9];
GetEnvironmentVariable(“PROCESSOR_ARCHITEW6432”,proc,9);
如果(lstrcmpi(过程,“AMD64”)==0)
{
返回FALSE;
}
返回TRUE;
}
至少对我有用

有关详细信息,请参阅链接:


对于Windows,您可以使用以下功能

#include<Windows.h>
BOOL IsX86()
{
    char proc[9];

    GetEnvironmentVariable("PROCESSOR_ARCHITEW6432", proc, 9);

    if (lstrcmpi(proc, "AMD64") == 0)
    {
        return FALSE;
    }

    return TRUE;
}
#包括
BOOL IsX86()
{
char-proc[9];
GetEnvironmentVariable(“PROCESSOR_ARCHITEW6432”,proc,9);
如果(lstrcmpi(过程,“AMD64”)==0)
{
返回FALSE;
}
返回TRUE;
}
至少对我有用

有关详细信息,请参阅链接:


这通常在构建时完成。您可以生成加载32位DLL的32位二进制文件和加载64位DLL的64位二进制文件

然后,用户使用其平台的设置(32位安装程序或64位安装程序)

因此,不需要在运行时确定您在哪个平台上进行此操作


无法在64位应用程序中加载32位DLL,或者以其他方式加载。

通常这是在构建时完成的。您可以生成加载32位DLL的32位二进制文件和加载64位DLL的64位二进制文件

然后,用户使用其平台的设置(32位安装程序或64位安装程序)

因此,不需要在运行时确定您在哪个平台上进行此操作


无法在64位应用程序中加载32位DLL,或者以其他方式加载。

+1。此功能的唯一缺点是从Windows XP SP2开始支持它。您不能将其用于SP1或clean XP。@gtikok:没有人支持SP2 XP之前的版本。您永远不知道客户PC上安装了什么平台:)+1。此功能的唯一缺点是从Windows XP SP2开始支持它。您不能在SP1或clean XP中使用它。@gtikok:没有人支持SP2 XP之前的版本。您永远不知道客户PC上安装了什么平台:)请提供头文件,因为我遇到了一些错误。如果(sizeof(int)==sizeof(size_t)){printf(X86);}或者{printf(x64);}我不确定这是否可行。请参阅下面的链接。也许会有帮助。如果使用TRUE和FALSE,为什么不返回BOOL?我在预处理中为32位设置了ENV32变量,为64位设置了ENV64变量。我检查以下条件#if ENV32 pritf(“32位”)#elif ENV64 printf(“64位”)。你能告诉我哪一个是好的吗?你能提供头文件吗?因为我遇到了一些错误。下面的代码如果(sizeof(int)==sizeof(size_t)){printf(X86);}或者{printf(x64);}我不确定这是否有效。请参阅下面的链接。也许会有帮助。如果使用TRUE和FALSE,为什么不返回BOOL?我在预处理中为32位设置了ENV32变量,为64位设置了ENV64变量。我检查以下条件#if ENV32 pritf(“32位”)#elif ENV64 printf(“64位”)。请问哪一个好?