我正在尝试在我的项目中使用FreeImage .NET包装器,我的ptoject目标AnyCPU并且dll包装器在此下不起作用,它只有在我定位x86机器时才有效。
当我尝试使用针对AnyCPU或X64的包装器加载文件时,它会抛出此异常:
"Se ha intentado cargar un programa con un formato incorrecto. (Excepción de HRESULT: 0x8007000B)"
Translated:
"Intent to load a program with incorrect format (Excepción de HRESULT: 0x8007000B)"
我尝试按照以下步骤在网络项目中使用x64 freeimage:http://www.sambeauvois.be/blog/2010/05/freeimage-and-x64-projects-yes-you-can/
...但我的VS2012无法打开任何解决方案,它说“无法找到本地化资源”。
freeimage和包装器的来源在这里:http://downloads.sourceforge.net/freeimage/FreeImage3154.zip
我需要转换为使用anycpu定位的dll或其他解决方案才能使其正常工作,我正在使用VBNET。
答案 0 :(得分:1)
您需要将freeimage库和.NET包装器编译为64位。
http://www.sambeauvois.be/blog/2010/05/freeimage-and-x64-projects-yes-you-can/
答案 1 :(得分:0)
最简单的解决方案是使用FreeImageNET nuget package。警告:我还没有测试过;我不知道它如何处理32位和64位。
您可以在解决方案资源管理器-"Manage NuGet packages for Solution..."
中进行操作。
以下说明适用于那些希望自己构建.NET包装器的人。
要澄清伯恩哈德的答案:
要在64位项目中使用FreeImage,仅将“ .NET-wrapper” FreeImageNet.dll
编译为64位是不够的。
还必须确保您使用的是FreeImage.dll
,FreeImage\Dist\x64\FreeImage.dll
的64位版本。
请注意,这不是“任何CPU”解决方案。将主exe的项目平台设置为“ x64”。
要构建64位的FreeImageNet.dll
(在VS 2019 Community
中进行测试):
"FreeImage DLL" [WIN32/WIN64]
存档。除非您要构建基础的C ++ dll,否则不需要“源代码分发”。在我撰写本文时,您下载的文件为FreeImage3180Win32Win64.zip
。FreeImage\Wrapper\FreeImage.NET\cs\FreeImage.NET.sln
;让它将项目格式转换为2019年。UnitTest project
(以避免由于缺少NUnit软件包而导致错误)。"x64"
。"Treat warnings as errors"
设置为"None"
。注意:必须为您构建的每个"Platform"
设置此项。因此,如果您忘记先设置Build Platform,则在将Build Platform设置为x64之后,请确认它仍然为“ None”。Build
。Debug
作为符号,请同时进行Release
和FreeImageNET.pdb
构建配置。您需要使用Release
dll来构建应用的Release版本。FreeImage\Dist\x64\FreeImage.dll
。(可选)验证您可以在该.sln中构建并运行示例1:
Debug + x64
;启动项目Sample 1
。FreeImage.dll
。bin
文件夹中包含Sample01.exe
的文件夹。其中还应包含您先前构建的FreeImageNet.dll
的副本。FreeImage\Dist\x64\FreeImage.dll
复制到找到Sample01.exe
的文件夹中。Program / Main
方法开始处设置断点。逐步操作,在控制台窗口中查找任何错误消息。最重要的是,确保FreeImage.IsAvailable()
检查成功-不要说“ FreeImage.dll似乎丢失”。现在您可以使用自己的应用重复进行此操作:
Debug + x64
。FreeImage.dll
,FreeImageNET.dll
和FreeImageNET.pdb
复制到包含您的.exe
的文件夹中。FreeImage\Wrapper\FreeImage.NET\cs\Library\Library.csproj
添加到您的解决方案中。这是VS 2019之前为您创建的“ 2019格式”版本。这使得调试包装器源代码变得容易。Library
项目作为依赖项,再加上FreeImage.dll
。)注意:将这些文件直接复制到bin文件夹是这样做的“肮脏”方法。是验证您可以使用dll构建并运行的最简单方法。更好的是将这些dll作为源代码控制下的“源”的一部分,并在构建过程中将其复制到bin文件夹中。谷歌在其他地方获得有关说明。