0

私のプロジェクトでは、dll ファイルを読み込めません

dll ファイル --> プラットフォーム ターゲットは x86

そして私のプロジェクト --> プラットフォームのターゲットは Anycpu です

マシンは 64 ビット OS を実行しています

これは私が使用するコードです

 pDll = NativeMethods.LoadLibrary(dllname);
// some code here
static class NativeMethods
{
    [DllImport("kernel32.dll")]
    public static extern IntPtr LoadLibrary(string dllToLoad);

    [DllImport("kernel32.dll")]
    public static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName);

    [DllImport("kernel32.dll")]
    public static extern bool FreeLibrary(IntPtr hModule);
}

この dll ファイルをロードできないのはなぜですか?

私の悪い英語でごめんなさい

4

1 に答える 1

2

他のすべてが問題ないと仮定すると(DLL名など):

あなたが説明しているのは既知の問題です...たとえば、DLLが32ビットで、使用しているOSが64ビットの場合、.NETアプリケーションは64ビットモードで実行されます...

最も簡単な解決策:DLLがx86でのみ使用可能な場合は、AnyCPUではなくx86用にコンパイルする必要があります。

そうしないと、そのDLLの64ビットバージョンが必要になり、「サイドバイサイドアセンブリ」と呼ばれる問題が発生します...これらは役立つと思います。

于 2012-12-18T19:29:30.840 に答える