如何在不同的机器上调用DLL方法?

时间:2013-05-04 21:08:08

标签: c# c dll com dllimport

假设我有一个带有以下函数的C dll:

void beep();
char* foo(char** whatever);

现在我希望能够将这个dll放在一台机器(服务器)上,并从另一台机器(客户端)调用它。客户端可以是C#,但是dll(和代理服务器)需要是常规的C.在客户端上理想的是这样的:

MyDllAccess remote = ProxyLib.GetRemoteDll("192.168.1.10:12100", "mydll.dll"); 
remote.execute("beep"); // other machine beeps (uses GetProcAddress to find function)

我知道我正在重塑COM等,但.....有没有办法?如果没有,为什么不这样做,因为我已经拥有了dll,所以最简单的方法是做什么?

编辑:它还需要使用Linux共享库,例如: ProxyLib.GetRemote(“192.168.10.12100”,“mything.so”)

1 个答案:

答案 0 :(得分:1)

如果您需要它在不同的操作系统上工作,您将很难以非常通用的方式进行操作。您可以在此维基百科文章中搜索“平台无关的API”:Inter-process communication以获得一个想法。你会发现大部分都是重量级的。

一种简单的方法是编写一个ad-hoc HTTP REST服务器(可能以JSONXML作为交换格式)。它具有简单的优点,您可以使用具有良好HTTP堆栈(包括移动设备)的任何操作系统访问它。