C++ 在运行时加载32位和64位的DLL
我需要在运行时加载32位和64位的DLL。如何确定32位和64位 谢谢,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)
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位”)。请问哪一个好?