我已经使用输出配置管理器设置构建了一个cpp dll,如快照中所示
它构建成功并且dll被创建。然后使用它我写了一个包含dll的c#项目如下
[System.Security.SuppressUnmanagedCodeSecurity]
[DllImport(@"somePath\ImgProcessorTrial.dll", EntryPoint = "ImgProc")]
之后,我使用如图所示的配置构建它
当我尝试运行此应用程序时,我在控制台中获得以下输出。
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的确切含义是什么以及如何解决它?是代码问题还是架构问题?
答案 0 :(得分:0)
BadImageFormat与.jpeg或.tif ...
无关当动态链接的文件格式时抛出此异常 库(.dll文件)或可执行文件(.exe文件)不符合 公共语言运行库所期望的格式。
在您的情况下,您正在调用本身为64位的DLL,因此您必须将项目编译为x64。在定位x86时会得到BadImageFormat