0

C# プリプロセッサ ディレクティブを使用して、64BitOperatingSystem で実行されている 32BitProcess を見つける方法を教えてください。

詳細については、extern 関数にアクセスするために、(ビットに基づいて) dll 名を宣言する必要があります。プリプロセッサの方法を使用して次のコードが必要です。

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 クラスを使用して、実行時に環境を決定します。Is64BitOperatingSystemおよびプロパティは、Is64BitProcess必要な情報を提供するはずです。

于 2013-06-06T05:17:13.013 に答える
1

これを解決することはできません:

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

コンパイラはプログラムがどこで実行されるかを事前に知らないため、コンパイル時間。より多くのソリューション「paltform」を作成し、カスタム コンパイラ フラグを宣言し、それに応じて使用することをお勧めします。もちろん、どの実行可能ファイルをどのプラットフォームで実行する必要があるかを知る必要があります。

于 2013-06-06T05:16:08.273 に答える