我有一个用C++ (Visual Studio6.0)编写的数据采集程序。一些客户希望从他们自己的自定义软件或LabView控制软件。我想拿出一个简单的API和一个dll,我可以分发给他们,并想要一些如何开始的提示。这将是非常基本的,可能是4到5个命令。我的DAQ程序将仍然在同一台机器上的自己的窗口中运行,我只是想将它设置为从另一个程序控制。
发布于 2008-11-12 22:14:04
有了DLL,您就走上了正确的道路。听起来,真正的诀窍是决定要使用哪种进程间通信(IPC)。选项有:套接字、管道、共享内存、同步对象(事件等)、文件、注册表等。
一旦您决定了这一点,然后在您的可执行文件中实现一个侦听器,以等待来自使用您的DLL的任何软件的传入IPC消息。
就API而言,您可以让它保持简单,就像您想要的那样。让DLL公开您的4或5个函数(确保您只使用本地数据类型,如char*和long,以避免模块边界问题),然后这些函数将使用您的IPC机制与正在执行的应用程序进行通信。
发布于 2008-11-12 22:18:35
像这样开始简单的事情会随着时间的推移而增长,所以你可能会更好地提前做一些工作,并使用一种会随着时间增长的技术。
在你的程序中实现一个COM接口将会给客户端很大的自由来决定如何使用它的接口,而且你不必担心IPC的机制,等等,因为COM的设计就是为了对你隐藏所有这些。
在未来,COM已经为事件等事情定义了很好的习惯用法,这些事件得到了脚本语言的很好支持,等等,如果你需要的话。
更新:有很多实现COM的方法。你可以在一本好的COM书的指导下从第一个原则开始构建它,或者使用像ATL这样的框架来节省一些样板。有很多很好的示例,例如参见MSDN。
发布于 2008-11-13 10:23:11
COM的最大优点是你不需要DLL!你会说,你的应用程序会一直运行。这意味着它可以充当COM对象创建者(“本地服务器”)。
如果有人想要一个"stdcall“动态链接库,您可以给他们一个动态链接库,它只在内部将所有调用转发到COM接口。编写它将是相当微不足道的。你会说,你只有5个函数。这表明您有一个COM接口,其中包含这5个方法。当包装程序DLL加载时,它会要求您的EXE创建其COM对象。DLL依次公开5个stdcall方法,每个方法调用COM对象上的一个方法。
https://stackoverflow.com/questions/285551
复制相似问题