0

假设我有一个 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")

4

1 回答 1

1

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

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

于 2013-05-05T06:19:06.353 回答