如果有人熟悉leadtools,则无法加载文件或程序集“Leadtools.Codecs”

时间:2012-09-04 13:52:58

标签: c# visual-studio-2010 dll leadtools-sdk

我在以下代码的最后一行得到一个例外(抱歉格式,不允许我以任何其他方式发布):

LeadHelper.Unlock(); 
RasterCodecs codecs = new RasterCodecs(); 
string imageLocation = @"...path...\Barcodes.tif"; 
RasterImage srcImage = codecs.Load(imageLocation); 

例外情况如下:

  

System.BadImageFormatException:无法加载文件或程序集“Leadtools.Codecs,Version = 17.5.0.0,Culture = neutral,..........”或其依赖项之一。试图引导格式不正确的程序。

为了试图摆脱这种异常,我引用了所有可能的Leadtools.Codecs。* DLL,Leadtools.dll ......几乎每一个Leadtools dll我们都可以参考。

对于我的包含,我包括Leadtools,Leadtools.Barcode,Leadtools.Codecs,Leadtools.Codecs.Tif,Leadtools.Codecs.Fax和Leadtools.Forms

这是我正在阅读条形码的测试控制台应用程序...... VS2010 C#。

另外,我绝对可以访问该文件,它是对网络文件的引用,但尝试在本地引用它,检查权限等等

7 个答案:

答案 0 :(得分:6)

该消息通常意味着您尝试在64位系统上加载32位DLL,反之亦然。

验证您是否拥有正确版本的DLL及其依赖项。

答案 1 :(得分:3)

To tnw:

这是来自LEAD支持的Daoud。 关于我们的成像.NET DLL的不同版本,每个DLL有4个不同的副本(不包括Silverlight或WinRT版本),它们是:

  • 32位.NET 4
  • 64位.NET 4
  • 32位.NET 2到3.5
  • 64位.NET 2到3.5

这意味着不同用户在此处发布的建议大多是正确的。您应该为您的平台和框架版本使用正确的DLL构建。但如果您仍然遇到我们工具包的任何问题,请发送电子邮件至support@leadtools.com,我们将与您一起解决问题。我们通常在同一工作日内回复,不迟于第二天回复。

还要确保在运行时加载了正确的DLL,因为如果PATH或GAC包含DLL的多个副本,则可能会加载错误的构建。

关于Ivan Leonenko的回复的最后说明:所提供的信息对于我们的多媒体工具包过滤器和编解码器用户来说是正确的。但是,tnw似乎正在使用我们的成像.NET程序集,它们是不同的.NET DLL并且没有"包装器"。

答案 2 :(得分:3)

在IIS中将启用应用程序池中的32位应用程序设置为true,然后尝试。我认为它会起作用因为这是与平台相关的问题。

答案 3 :(得分:2)

BadImageFormatException是由平台不匹配引起的。当针对x64编译Leadtools程序集时,您要么在项目中定位x86,反之亦然。

要修复此问题,请查看Visual Studio中项目的属性。该平台位于构建选项卡上,类似于x86,x64或AnyCPU。

您可能必须使用配置管理器(在构建菜单下找到)来添加另一个平台。

这是Microsoft support article with more info

答案 4 :(得分:0)

看起来你的目标是该DLL的错误框架。尝试切换引用dll的csproj框架。

我不确定内置了哪些框架leadtools,但尝试在其他所有框架(4.0客户端,4.0,2.0等等)中构建。

更多信息:http://msdn.microsoft.com/en-us/library/bb398202.aspx

答案 5 :(得分:0)

您正在尝试引用错误的程序集。您应该从LEAD SDK for 4.0或2.0 .NET Framework的dist文件夹中为您的案例尝试包装器。

我正在使用他们的屏幕截图和编解码器,我只引用了所需的文件(.NET包装器): LEncH2644.dll LMISOMux.dll LMScrCap2.dll LMVRGBxf.dll

但你应该单独提供LEAD的核心文件: Leadtools.Multimedia.dll,ltmm.manifest,ltmm175.dll,DSKernel2.dll。最后两个必须在系统上注册(regsvr32)。

必须在锁定/解锁组件的项目中引用Leadtools.Multimedia.dll。

答案 6 :(得分:0)

我已经安装了Microsoft Visual C ++ 2008和2010 SP1可再发行组件包(x86)。

然后,在IIS中将应用程序池中的32位应用程序启用为True。效果很好。