我正尝试在我的项目中使用FreeImage .NET包装器,我的对象是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/
...But my VS2012无法打开任何解决方案,它显示“找不到本地化资源”。
freeimage和包装器的源代码在这里:http://downloads.sourceforge.net/freeimage/FreeImage3154.zip
我需要将dll转换为与anycpu目标或其他解决方案,以使其工作,我正在与VBNET工作。
发布于 2013-11-23 06:21:57
您需要将免费映像库和.NET-wrapper编译为64位。
http://www.sambeauvois.be/blog/2010/05/freeimage-and-x64-projects-yes-you-can/
发布于 2019-11-22 20:22:20
最简单的解决方案是使用。注意:我还没有测试过这个;我不知道它是如何处理32位和64位的。
您可以在解决方案资源管理器- "Manage NuGet packages for Solution..."
中执行此操作。
下面的说明是为那些希望自己构建.NET包装器的人准备的。
为了澄清伯恩哈德的答案:
要在64位项目中使用FreeImage,将".NET-wrapper“FreeImageNet.dll
编译为64位是不够的。
还必须确保您使用的是64位版本的FreeImage.dll
FreeImage\Dist\x64\FreeImage.dll
。
请注意,这不是“任何CPU”解决方案。将主可执行文件的项目平台设置为"x64“。
要在64位(在VS 2019 Community
中测试)中构建FreeImageNet.dll
:
"FreeImage DLL" [WIN32/WIN64]
归档文件。你不需要“源代码发行版”,除非你想构建底层的C++动态链接库。在我写这篇文章时,您下载的文件是VS中的FreeImage3180Win32Win64.zip
.UnitTest project
(为了避免由于缺少NUnit package)."x64"
.FreeImage\Wrapper\FreeImage.NET\cs\FreeImage.NET.sln
/ Properties / Build而导致的错误-将"Treat warnings as errors"
设置为"None"
。注意:必须为您构建的每个"Platform"
设置此属性。因此,如果你忘记首先设置Build Platform,在将Build Platform设置为x64之后,如果你想在调试应用程序时使用调试版本及其符号的FreeImageNET.pdb
,请验证对于Debug
和Release
构建配置,这仍然是调试库项目/x64。您将需要应用程序的发布版本的Release
dll。FreeImage\Dist\x64\FreeImage.dll
.或者,验证您可以在该.sln中构建和运行示例1:
启动项目Sample 1
.
Debug + x64
如果你现在运行,它将不会找到现在包含Sample01.exe
的bin
文件夹。它还应该包含您先前构建的FreeImageNet.dll
的副本。FreeImage\Dist\x64\FreeImage.dll
复制到您在Sample的Program / Main
方法开头找到Sample01.exe
.FreeImage.IsAvailable()
检查成功--不要说"FreeImage.dll似乎丢失了“。现在,您可以使用自己的应用程序重复此操作:
将主可执行项目的配置设置为Debug + x64
.
.exe
.FreeImage.dll
、FreeImageNET.dll
和FreeImageNET.pdb
复制到包含您的bin的文件夹中,并将FreeImage\Wrapper\FreeImage.NET\cs\Library\Library.csproj
添加到您的解决方案中。这是VS 2019之前为您创建的"2019格式“版本。FreeImage.dll
.)引用Library
项目
注意:将这些文件直接复制到bin文件夹中是一种“肮脏”的做法。是验证您可以使用dlls构建和运行的最简单方法。更好的做法是让这些dll成为源代码控制下的“源”的一部分,作为构建过程的一部分复制到bin文件夹中。在其他地方搜索有关这方面的说明。
https://stackoverflow.com/questions/17746336
复制相似问题