试图加载格式不正确的程序.(HRESULT: 0x8007000B的异常)在c#中调用时
本文关键字:异常 调用 0x8007000B HRESULT 格式 加载 不正确 程序 | 更新日期: 2023-09-27 18:15:56
我有一个delphi dll,我在我的web应用程序中使用互操作服务调用。在平台目标中调用dll的web应用程序设置为任何cpu。当我在控制台应用程序中测试它时,平台目标是x86,它加载并调用dll,没有错误。如果我将主机应用程序平台目标更改为任何cpu,它会给出相同的错误。我无法改变web应用的平台目标,我该如何解决这个问题?delphi dll是针对使用x86的吗?我可以编译delphi项目使用任何cpu在Borland delphi 7。非常感谢你的帮助。这是我的import语句-
[DllImport(@"Decoder.dll", CharSet = CharSet.Unicode)]
static extern Int32 CALinkDecode(
string sCode,
out int SubscriberID,
out int MailshotID,
out int LinkID
);
Int32 retvalptr = CALinkDecode(sCode, out cas,
out cam, out cal);
你有两个选择,
- 升级到较新的Delphi版本,以便您可以将库项目重新编译为x64。然后就可以加载了。
- 坚持x86编译,并强制web应用程序在32位运行。如果web应用程序托管在IIS中,可以更改应用程序池设置。
http://www.codeproject.com/tips/325824/running - - 32位应用程序——在iis -在一个64位的
显然你有一个32位的DLL不能在64位进程中加载。要么创建64位版本的DLL,要么将IIS配置为在32位进程中托管DLL。
然而,我怀疑你的DLL根本不需要。您似乎正在使用它来执行一些简单的文本处理。将其移植到。net中可能会更简单,从而避免所有这些复杂性。一旦你这样做了,你将永远摆脱这个依赖。