在 SDI 应用程序中访问 DLL 函数的正确方法是啥?

Posted

技术标签:

【中文标题】在 SDI 应用程序中访问 DLL 函数的正确方法是啥?【英文标题】:What is the correct way to access DLL functions in a SDI app?在 SDI 应用程序中访问 DLL 函数的正确方法是什么? 【发布时间】:2010-12-10 01:12:57 【问题描述】:

我有一个运行良好的简单 SDI 应用程序。

最近我决定使用一些由 DLL 导出的函数。

所有这些 DLL 函数都使用 静态内存缓冲区(应用程序必须在函数调用中定义和使用)。

事实上,当视图中发生特定事情时,应该调用一些 DLL 函数。

我不确定应该如何处理 DLL 函数的调用。 MainFrame、Document 和 View 是否都可以访问它们(进而访问内存缓冲区)? 还是他们应该向应用程序发送消息以进行函数调用?

【问题讨论】:

【参考方案1】:

定义“正确”:)

首先,我认为如果将所有对 DLL 的调用打包并将它们放在一个地方,会更好。然后,哪个调用 DLL 并不重要(即接口)。但是,最好只让系统的一部分知道 DLL 并使用该接口。在这种情况下,它取决于 DLL 实际在做什么,即它旨在处理什么样的抽象层。如果是与 Document 相关的数据,则应该由 Document 负责通信。如果 DLL 正在执行与视图相关的工作,它甚至可以被视图使用。如果 DLL 正在做与应用程序相关的事情,它应该属于应用程序。

问自己这个问题,DLL 正在做什么,即它在您的设计中扮演什么样的角色,然后由它来决定。

【讨论】:

以上是关于在 SDI 应用程序中访问 DLL 函数的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

从 Delphi“访问冲突”正确调用 DLL 中的 C++ 函数

在 SDI mfc 应用程序中从视图访问模式对话框

从Delphi调用C ++ DLL时发生访问冲突

非托管 DLL 函数的正确调用约定

MFC SDI中 如何为动态创建的按钮添加消息处理函数

怎样在C#中调用DLL中的函数,最好有代码和详细说明