0

FreeImage の最新のコンパイル済みバージョンをダウンロードしてから、FreeImageNet ラッパーをビルドします。FreeImage.dll と FreeImageNet.dll を実行可能ファイル (サンプル コード) と同じフォルダーに配置します。しかし、実行するたびに、freeimage.dll が見つからないと表示されます。FreeImageWrapper.cs のコードを変更し、例外ハンドラーを削除しました

public static bool IsAvailable()
        {
            /*try
            {*/
                // Call a static fast executing function
                Version nativeVersion = new Version(GetVersion());
                Version wrapperVersion = GetWrapperVersion();
                // No exception thrown, the library seems to be present
                return
                    (nativeVersion.Major > wrapperVersion.Major) ||
                    ((nativeVersion.Major == wrapperVersion.Major) && (nativeVersion.Minor > wrapperVersion.Minor)) ||
                    ((nativeVersion.Major == wrapperVersion.Major) && (nativeVersion.Minor == wrapperVersion.Minor) && (nativeVersion.Build >= wrapperVersion.Build));
            }
            /*catch (DllNotFoundException)
            {
                return false;
            }
            catch (EntryPointNotFoundException)
            {
                return false;
            }
            catch (BadImageFormatException)
            {
                return false;
            }*/

        }

常に BadImageFormatException をスローします。問題はネイティブ dll (freeimage.dll) にあるようです。

どうすれば修正できますか?

前もって感謝します。

Visual C# 2010 Express を使用しています

4

1 に答える 1

2

これは、管理されていない32ビットdllを64ビットプロセスにロードしようとすると非常に頻繁に発生します。この問題を回避するには、スタートアッププロジェクトのプロパティを開き、Built-PlatformTargetでタイプをからAny CPUに変更しx86ます。

于 2012-07-11T11:55:58.043 に答える