Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Delphi dll试图加载格式不正确的程序。(HRESULT的异常:0x8007000B)在c中调用时#_C#_Asp.net_Delphi_Iis - Fatal编程技术网

C# Delphi dll试图加载格式不正确的程序。(HRESULT的异常:0x8007000B)在c中调用时#

C# Delphi dll试图加载格式不正确的程序。(HRESULT的异常:0x8007000B)在c中调用时#,c#,asp.net,delphi,iis,C#,Asp.net,Delphi,Iis,我有一个delphi dll,我在web应用程序中使用互操作服务调用它。在平台目标中调用dll的web应用程序im设置为任何cpu。 当我在控制台应用程序中测试它时,哪个平台目标是x86,它加载并调用dll时没有错误。如果我将console apps platform目标更改为任何cpu,则会出现相同的错误。我无法更改web应用的平台目标。我怎样才能克服这个问题? delphi dll的目标是使用x86。我可以编译delphi项目以使用Borland delphi 7中的任何cpu吗。非常感谢你

我有一个delphi dll,我在web应用程序中使用互操作服务调用它。在平台目标中调用dll的web应用程序im设置为任何cpu。 当我在控制台应用程序中测试它时,哪个平台目标是x86,它加载并调用dll时没有错误。如果我将console apps platform目标更改为任何cpu,则会出现相同的错误。我无法更改web应用的平台目标。我怎样才能克服这个问题? delphi dll的目标是使用x86。我可以编译delphi项目以使用Borland delphi 7中的任何cpu吗。非常感谢你的帮助。 这是我的进口声明-

    [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中,则可以更改应用程序池设置

显然,您有一个32位DLL,无法在64位进程中加载。创建64位版本的DLL,或将IIS配置为在32位进程中托管DLL


但是,我怀疑您的DLL根本不需要。您似乎正在使用它执行一些琐碎的文本处理。将其移植到.net并避免所有这些复杂性可能会更简单。完成此操作后,您将永远摆脱这种依赖关系。

谢谢。我想我更喜欢第二种选择。任何建议。我已经下载了Borland Delphi 7。附带的CodeProject文章讨论了如何更改IIS设置。请尝试一下,对不起,莱克斯,我是说第一个选择。关于免费更新ide.Delphi的任何建议都不是免费的。您需要为x64编译器付费。或使用FPC。您不能下载Delphi 7,除非您指的是非法盗版版本。如果是这样的话,那你就太丢脸了。如果你对Delphi 7的功能集还满意的话,那么也许使用FPC的CodeTyphon发行版就足够了。另一个选择是扔掉Delphi代码,成为纯C。您的Web应用程序是否使用了任何一个以上的解码功能?仅使用delphi解码功能。您能否具体说明函数名?请告诉我确切的名字。我强烈感觉到你在用Delphi浪费时间,而你用.net实现的目标微不足道。David发生的是,有一个传统的Delphi应用程序使用base32将三个值编码成一个字符串。也是一个delphi dll,用于解码此字符串并返回三个值。我想用这个解码器。我不会那样做。移植到.net代码将是一件小事。嗨,大卫,是的,长期来看,这将是解决方案。谢谢你的帮助。@ StylesYoung也许会考虑除氧或PasCABC。Net@AriochC#是一个显而易见的选择,因为应用程序是用这种语言编写的language@DavidHeffernan创造一些新的和简单的东西-是的。移植继承的代码-也许不是。至少主题发起者害怕这样做。我们没有看到代码,我们没有;I don’我不知道它有多复杂和低级。@Arioch base 32有多复杂?你的建议很复杂。