-1

我有一个 delphi dll,我在我的网络应用程序中使用互操作服务调用它。在平台目标中调用 dll 的 Web 应用程序设置为任何 cpu。当我在我的控制台应用程序中测试它时,它的平台目标是 x86,它加载并调用 dll 没有错误。如果我将控制台应用程序平台目标更改为任何 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);
4

2 回答 2

2

你有两个选择,

  • 升级到较新的 Delphi 版本,以便您可以将库项目重新编译为 x64。然后就可以加载了。
  • 坚持 x86 编译,并强制 Web 应用程序以 32 位运行。如果 Web 应用程序托管在 IIS 中,您可以更改应用程序池设置。

http://www.codeproject.com/Tips/325824/Running-a-32-bit-application-under-IIS-on-a-64-bit

于 2013-05-30T07:54:55.097 回答
2

显然,您有一个 32 位 DLL,它不能在 64 位进程中加载​​。要么制作 64 位版本的 DLL,要么配置 IIS 以在 32 位进程中托管您的 DLL。

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

于 2013-05-30T09:08:40.330 回答