BadImageFormatException或System.DllNotFoundException尝试运行c#项目时

时间:2014-06-27 12:24:17

标签: c# .net dll visual-studio-2013 leptonica

我已经使用输出配置管理器设置构建了一个cpp dll,如快照中所示

snapshot

它构建成功并且dll被创建。然后使用它我写了一个包含dll的c#项目如下

[System.Security.SuppressUnmanagedCodeSecurity]
[DllImport(@"somePath\ImgProcessorTrial.dll", EntryPoint = "ImgProc")]

之后,我使用如图所示的配置构建它

consumer_configuration

当我尝试运行此应用程序时,我在控制台中获得以下输出。

BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

之后当我更改构建配置并尝试再次构建它时,cpp项目不会构建并提供类型的大量错误,如下所示。

unresolved external symbol for all functions of leptonica library

这个特殊的库leptonica和所有必需的库都是在64位机器上单独构建的。当我尝试更改c#项目的配置时,我得到了异常

DLLNotFoundException

我在项目中所做的是调用dll函数来读取图像并对其进行操作。我认为它与我试图读取的图像格式有关。所以我尝试使用.jpeg运行应用程序和.tif但总是有相同的输出。我在64位机器上的visual studio 2013和framework 3.5上做了所有这些.BadImageFormatException的确切含义是什么以及如何解决它?是代码问题还是架构问题?

1 个答案:

答案 0 :(得分:0)

BadImageFormat与.jpeg或.tif ...

无关

BadImageFormat

  

当动态链接的文件格式时抛出此异常   库(.dll文件)或可执行文件(.exe文件)不符合   公共语言运行库所期望的格式。

在您的情况下,您正在调用本身为64位的DLL,因此您必须将项目编译为x64。在定位x86时会得到BadImageFormat