Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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# 将64位应用程序中的32位库与perl或neko一起使用_C#_Perl_Delphi_Shared Libraries_Neko - Fatal编程技术网

C# 将64位应用程序中的32位库与perl或neko一起使用

C# 将64位应用程序中的32位库与perl或neko一起使用,c#,perl,delphi,shared-libraries,neko,C#,Perl,Delphi,Shared Libraries,Neko,我知道,这是一个非常常见的问题,但我想知道更多关于这个问题的信息 我们有一个用C编写的应用程序,它被编译成x64。它必须编译为x64,因为这是我们客户的要求。最近,我们发现我们有非常有用的模块,我必须测试Double-sigs的旧delphi代码。出于愚蠢的原因,我不能用Delphi7以外的任何东西编译这个模块。所以我只能使用这个模块的x32.dll和x64应用程序来使用它 我已经发现了IPC通信的解决方法,但我熟悉perl,最近发现了neko。据我所知,perl用于粘合代码,neko用于在不同

我知道,这是一个非常常见的问题,但我想知道更多关于这个问题的信息

我们有一个用C编写的应用程序,它被编译成x64。它必须编译为x64,因为这是我们客户的要求。最近,我们发现我们有非常有用的模块,我必须测试Double-sigs的旧delphi代码。出于愚蠢的原因,我不能用Delphi7以外的任何东西编译这个模块。所以我只能使用这个模块的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解决方案。创建进程外COM服务器,该服务器公开32位DLL的功能。从64位进程中使用该COM服务器,就像使用任何其他COM服务器一样。

如果这两个都是Windows环境可执行文件,能否尝试在旧版可执行文件周围包装COM互操作层,并将其用作进程外服务器?这就是我所说的IPC通信,还是我错了?IPC与COM包装器不同。我正在考虑Delphi可执行文件实现任何COMComponent对象模型接口和/或对象的可能性,这些接口和/或对象可以包装在互操作层中,并在进程外暴露给64位应用程序。你在问什么?您需要两个进程和IPC。别无选择。@DavidW我明白了,谢谢你,我去看看。