我刚刚下载了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#的经验可以提供一些建议?谢谢!
答案 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”。