2012-07-11 73 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