私は宣言していますたとえば、:外部DLLから関数シグネチャを宣言しても、DLLまたは関数が存在しない場合はランタイム例外が発生しません。
internal static class WinAPI
{
[DllImport("DwmApi.dll", PreserveSig = false)]
internal static extern bool DwmIsCompositionEnabled();
}
を私はは私のプロジェクトで機能をDwmIsCompositionEnabled呼び出していないよ、私はDwmApiシステム上でプログラムを実行している場合、これは例外を発生させないことを願っています.dllが存在しません(またはそのDLLに関数が存在しません)。 (実際のケース:DwmApi.dllにはWindows Vistaが必要なため、Windows XPには存在しません)。
"P/Invoke上の薄いC#ラッパー"が意味することや、私に例を挙げて説明できますか? – AnAurelian
ネイティブAPIを複数の場所でP/Invokeする場合、これをP/Invokeにして例外をうまく処理するC#Adapterクラスに入れてください。これは、あなたがP/Invokeするたびに、これを全面的に行うのではなく、これです。 –