我的MFC程序要调用一个自己写的静态库,发现在debug版本的程序关闭后在任务管理器里的进程还没有退出。
静态库很简单,就两个文件:
a.h#pragma once#include <afxwin.h>namespace HM2p5
{
class MeshParameter
{
public: MeshParameter()
{
}; virtual ~MeshParameter(){};
MeshParameter& operator = (const MeshParameter& p); };
}a.cppnamespace HM2p5
{
MeshParameter& MeshParameter::operator = (const MeshParameter& p)
{
return *this;
}
}MFC调用如下: MeshParameter MeshParameterer1;
MeshParameter MeshParameterer2;
MeshParameterer2 = MeshParameterer1;(1)静态库和MFC程序都选择了Shared MFC dll.
(2)如果a.h不加#include <afxwin.h>,那么没有错。我其实要用到COLORREF,所以包含了<afxwin.h>
(3)如果调用时没有MeshParameterer2 = MeshParameterer1,那么也没有错。
(4)release版本没这个问题。
请问我现在应该怎么改我的静态库使得没有这个问题。

解决方案 »

  1.   

    关键看你是怎么销毁对话框的,粗看你的静态库没问题。在程序的C***App::ExitInstance()
    内追加断点,在Debug的时候调试看看能否执行得到?
    应该是你的程序因为某个原因未能成功销毁。
      

  2.   

    Debug版本exe也使用Debug版本的静态库
      

  3.   

    没法到ExitInstance()里面。请问然后怎么查
      

  4.   

    我用的就是Debug版本的静态库
      

  5.   

    具体还要看你的程序是文档还是基于对话框的,
    在销毁程序的位置加上断点,比如OnDestroy  DestroyWindow 之类的位置。
    最好在析构函数处也加上断点看看。
    或者把主程序如何退出程序的代码贴出来让大家看看。