【问题标题】:Unload dll files from a MFC Program从 MFC 程序中卸载 dll 文件
【发布时间】:2012-02-22 07:27:40
【问题描述】:

我有一个 MFC 程序,即使我关闭了该程序,它也不会消失,并且仍然显示在任务管理器中。当我查看调用堆栈时,我看到一些 dll 文件仅加载但未卸载。

你有办法在退出程序时卸载所有的 dll 文件吗?所以exe不会显示在任务管理器中。

我在类的顶部声明了一些变量:

vtkPoints *newPts = vtkPoints::New();
vtkPoints *newPtsSuction  = vtkPoints::New();     
CArray <double,double> ScalarValues_pressure;
CArray <double,double> ScalarValues_suction;
CArray <double,double> ScalarValues;

并在另一个函数中将值添加到它们,并直接在另一个函数中使用变量。

【问题讨论】:

  • 当您的应用程序关闭时,操作系统会自动卸载 DLL。你试图以错误的方式解决这个问题。真正的问题是应用程序代码中的某些内容阻止了它关闭。没有看到代码就不可能说出它是什么。考虑更新您的问题。
  • 感谢科迪·格雷。我已经更新了问题。

标签: c++ windows winapi dll mfc


【解决方案1】:

首先的问题不是 DLL 卸载。您的应用程序冻结在一种死循环中,或者无法正确完成终止。修复此问题后,库将自动卸载并且进程将继续,包括从任务列表中。

【讨论】:

  • 线程堆栈 - 检查您的应用程序正在做什么以及为什么它没有响应关闭请求而销毁所有内容。您可能还想在WM_CLOSEWM_DESTROY 消息处理程序(例如顶级窗口中的OnCloseOnDestroy)中放置一个断点,并从那里逐步执行代码以查看它可能卡在哪里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
相关资源
最近更新 更多