MFC 罐头 DllMain 不为 DLL_PROCESSS_DETACH 调用 ExitInstance?

Posted

技术标签:

【中文标题】MFC 罐头 DllMain 不为 DLL_PROCESSS_DETACH 调用 ExitInstance?【英文标题】:MFC canned DllMain does not call ExitInstance for DLL_PROCESSS_DETACH? 【发布时间】:2009-03-26 21:26:59 【问题描述】:

MFC 8.0 的固定 DllMain 在获得 DLL_PROCESS_DETACH 时似乎没有调用 ExitInstance。一种可能的解决方案是定义我自己的 DllMain,但我如何告诉链接器使用我的而不是 MFC?

或者,我不知道是否有另一个在 DLL_PROCESS_DETACH 上调用的覆盖?

【问题讨论】:

【参考方案1】:

我在使用 /clr 编译的项目中遇到过类似的问题。你有同样的情况吗?我永远无法将其跟踪到特定条件,但是将一些静态初始化程序更改为设置 null 清除了它。我认为这与静态析构函数的注册顺序有关。

【讨论】:

用/clr编译;我明天一定要检查一下。【参考方案2】:

我不确定为什么不调用您的 ExitInstance,但是可以通过将 MFC 的 dllmodul.cpp 文件的内容复制到您的 dll 中的文件中并添加任何额外的必需功能来定义您自己的 DllMain。该过程记录在this MS knowledge base article 中。虽然它是为 MFC 4.0 编写的,但我已经成功地将这种方法用于使用 MFC 8.0 的应用程序。

【讨论】:

以上是关于MFC 罐头 DllMain 不为 DLL_PROCESSS_DETACH 调用 ExitInstance?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MFC 上的按钮加载文件?

2015.3.4 VS2005调用MFC dll时报错及解决

Dllmain的作用

DllMain 用法

在 DLLMain 中调用 CUDA 函数

沙丁鱼罐头的故事