c# - 如何在不同的机器上调用dll方法?

标签 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")

最佳答案

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

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

关于c# - 如何在不同的机器上调用dll方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16378980/

相关文章:

python - 在python中从dll调用函数

c# - Entity Framework ALTER TABLE 语句与 FOREIGN KEY 约束冲突

c# - nopCommerce框架如何使用MySQL数据库?

c# - 在回发时,如何检查 Page_Init 事件中哪个控件导致回发

c# - 无法通过 VS 2010/2012 连接到本地数据库

c - 警告 : assignment makes pointer from integer without a cast [enabled by default]

c - 以多线程方式进行矩阵乘法

c - 崩溃后恢复与服务器的连接

visual-studio - Visual Studio 2013 Professional - 无法找到消息文件 'cscui.dll'

Python Ctypes : Loading C++ DLL - "module not found" or "function ' fn_12 3' not found"