0

如何使用 C# 预处理器指令找到在 64BitOperatingSystem 上运行的 32BitProcess。

有关更多信息,我需要声明 dll 名称(基于位)以访问 extern 函数。我需要使用预处理器方式的以下代码。

public String WABDll; 
if (64Bit)
{
    WABDll = "Win-64.dll";
}
else if(32Bit Process on 64BitOS)
{
   WABDll = "Win-32on64.dll";
}
else if(32Bit)
{
    WABDll = "Win-32.dll";
}

我尝试了以下方式

#if _64BIT
    public const String WABDll = "Win-64.dll";
#elif _32BIT
    public const String WABDll = "Win-32on64.dll";
#else
    public const String WABDll = "Win-32.dll";
#endif

有什么建议么。

4

2 回答 2

2

不要使用预处理器指令执行此操作;使用Environment 类在运行时确定环境。和属性应该为您提供所需的信息Is64BitOperatingSystemIs64BitProcess

于 2013-06-06T05:17:13.013 回答
1

你不能解决这个问题:

else if(32Bit Process on 64BitOS)
{
   WABDll = "Win-32on64.dll";
}

编译时间,因为编译器事先不知道程序将在哪里运行。我可以建议您创建更多解决方案“paltform”,声明一些自定义编译器标志并相应地使用它们。当然,您需要知道哪个可执行文件必须在哪个平台上运行的部署时间。

于 2013-06-06T05:16:08.273 回答