2012-07-11 42 views
0

我已經下載了FreeImage的最新編譯版本,然後構建FreeImageNet包裝器。將FreeImage.dll和FreeImageNet.dll放在與我的可執行文件(示例代碼)相同的文件夾中。但每次我運行它,它說freeimage.dll丟失。我修改了FreeImageWrapper.cs上的代碼並刪除了異常處理程序FreeImage on C#

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速成

+3

這聽起來像是一個32位和64位的問題。 – 2012-07-11 11:53:02

回答

2

發生這種情況經常,如果你嘗試一個非託管32位的DLL加載到64位進程。要解決此問題,請打開啓動項目的屬性,並在Built-PlatformTarget下將其類型從Any CPU更改爲x86

+0

...或獲取64位版本的FreeImage DLL。 ;) – 2012-07-11 11:56:45

+0

謝謝!我之前選擇了Windows 7 64上的任何CPU – Irwan 2012-07-11 12:08:02