无法在DLL“FreeImageNET”中找到名为“FreeImage_GetFileTypeU”的入口点

时间:2012-11-10 14:38:19

标签: c# dllimport freeimage

我刚刚下载了FreeImage 3.15.4 Win32,我正在尝试通过他们的C#示例。我有一个64位Windows 7机器与Visual Studio Express 2010,所以我重新编译样本到64位,如此处所述(http://www.sambeauvois.be/blog/2010/05/freeimage-and-x64-projects-yes-you-can /)。我还必须在FreeImageStaticImports.cs中更改“FreeImageLibrary”字符串的名称,以便启动示例应用程序(生成的DLL被命名为FreeImageNet而不是FreeImage,如预期的样本)。

然而,当我运行示例时,我得到一个“无法在DLL'FreeImageNET'中找到名为'FreeImage_GetFileTypeU'的入口点。”每次调用FreeImage函数时都会出错。这些示例引用了包含DLLImport语句的库,因此我不确定这里有什么问题。有没有人有FreeImage和C#的经验可以提供一些建议?谢谢!

1 个答案:

答案 0 :(得分:0)

  

我还必须更改“FreeImageLibrary”字符串的名称

这就是你遇到这个麻烦的方法。这里涉及两个 DLL。 FreeImage.dll是 native DLL,它包含FreeImage_GetFileTypeU导出。 FreeImageNET.dll是托管类库,它包含本机DLL的包装器,它没有该异常消息告诉您的导出。

您应该做的是从源重建本机DLL,以便获得64位版本的FreeImage.dll。那篇博文告诉你如何做到这一点。并提供了下载,ymmv。

还必须将其复制到构建输出文件夹中,以便可以在运行时找到它。一种简单的方法是使用Project + Add Existing Item将其添加到项目中,并将其“Copy to Output Directory”属性设置为“Copy if newer”。