![]() |
1
1
ccc.dll应导出“setstate”函数。然后,bbb.dll可以在需要时调用所述函数。您需要静态地或通过loadlibrary/getprocaddress将bbb.dll链接到ccc.dll。 |
![]() |
2
4
DLL不通信。课堂交流。想想那些需要相互交流的课程,答案就会清楚得多。 |
![]() |
3
3
您可以直接进行API调用。它在同一进程中,因此静态对象也将被共享。 |
![]() |
4
3
您可以使用任何广泛的win32 ipc工具-共享内存、互斥、事件等。提供您需要的通信类型的详细信息,论坛将为您提供更具体的建议。 |
![]() |
5
1
您需要第三个程序集作为两者之间的接口。此接口程序集将导出其他两个程序集之间进行通信所需的所有对象和/或方法。 下面的例子当然是考虑.NET作为平台,但是在Win32/C++项目中可以使用相同的精确概念。 在建筑方面,这是一个困难的问题。.NET中的两个dll不能直接通信 二 但是,如果没有一些开销,您可以进行通信 一 方式。原因是您只能从另一个程序集引用一个程序集,否则将有一个循环引用。 不过,有一个简单的解决方案,但这需要您的三个组件。采用以下组件:
只要说出名字,你就应该能够很好地了解这将如何工作。基本上,interface.dll将包含client.dll和server.dll相互通信所需的公开对象。client.dll和server.dll都会引用和interface.dll来访问这些对象。 使用该方法,两个程序集都可以访问任何一个程序集需要通信的所有对象。interface.dll还包含client.dll和server.dll都需要通信的公开方法。因此,它可以包含例如client.dll或server.dll可以使用的“send”和“receive”方法。 您必须为此开发某种通信标准。
有了这两种说法,无论您是在通信实际的类和对象,还是仅仅是消息,第三个处理这一问题的程序集都将毫无瑕疵地工作,只要您在体系结构和设计中付出了努力。 不要把名字放在心上,client.dll、server.dll和interface.dll都只是一个常见方法论的例子,说明如何完成这样的任务。使用此方法,将不存在循环引用,因此程序集可以通过两种方式而不是一种方式进行通信。 |