假设我有一个带有以下函数的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”)
答案 0 :(得分:1)
如果您需要它在不同的操作系统上工作,您将很难以非常通用的方式进行操作。您可以在此维基百科文章中搜索“平台无关的API”:Inter-process communication以获得一个想法。你会发现大部分都是重量级的。
一种简单的方法是编写一个ad-hoc HTTP REST服务器(可能以JSON或XML作为交换格式)。它具有简单的优点,您可以使用具有良好HTTP堆栈(包括移动设备)的任何操作系统访问它。