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 回答