通过 perl 或 neko 从 64 位应用程序使用 32 位库

Using 32-bit library from 64-bit application with perl or neko

我知道,这个问题经常被问到,但我想了解更多关于这个问题的信息。

我们有应用程序,用 C# 编写,编译为 x64。它必须编译为 x64,因为这是我们客户的要求。最近,我们发现我们有旧的delphi代码(sighs)和非常有用的模块,我必须测试(double sighs) .出于一些愚蠢的原因,我不能用其他任何东西编译这个模块 delphi 7。所以我坚持使用这个模块的 x32 .dll 和 x64 应用程序来使用它。

我已经发现了 IPC 通信的解决方法,但我熟悉 perl 并且最近发现了 neko。据我所知,perl 用于胶水代码,neko 用于在不同语言之间共享运行时。那么也许有一些使用 perl、neko 或其他东西的解决方法?

此外,如果您能提供任何在 neko 中在两种语言之间共享运行时的示例代码,我将不胜感激。

谢谢!

Perl 和 Neko 都不会帮助您在 64 位进程中使用这个 32 位库。如果您尝试使用 Perl 或 Neko,您只会在两个模块之间注入更多层。

您将需要使用一种或另一种形式的 IPC。有很多方法可以做到这一点。您可以为 32 位库创建一个 32 位 C# 主机进程,然后使用标准 .net IPC 框架之一在 32 位和 64 位 C# 进程之间进行通信。

但是,这看起来确实适合进程外 COM 解决方案。创建一个公开 32 位 DLL 功能的进程外 COM 服务器。像使用任何其他 COM 服务器一样从 64 位进程使用该 COM 服务器。