我做了一个动态库,在里面做了一个类CMyClass。然后在应用工程里定义:
CMyClass* myclass=new myclass;
delete myclass;结果在delete时程序出错。我把CMyClass类中的所有函数、变量都删掉,剩一个空壳,仍然出错,因此我断定不是类的编写有问题。使用动态库里的类还有什么讲究吗?

解决方案 »

  1.   

    很明显错了应该如下:
    CMyClass* myclass=new CMyClass;
    delete myclass;
      

  2.   

    liugy(光哥) 说的对,应该是
    CMyClass* myclass=new CMyClass;
    delete myclass;
    但这只是我在提问时的笔误,程序原来就是
    CMyClass* myclass=new CMyClass;
    delete myclass;
    所以问题还没解决。
      

  3.   

    解决了。
    原在.cpp中
    myclass::myclass()
    {
    }
    myclass::~myclass()
    {
    }
    现在.h中
    class AFX_EXT_CLASS myclass : public CObject
    {
    myclass(){};
    ~myclass(){};
    }
    居然delete就不会出错了。
      

  4.   

    在DLL中的类定义前面加上class __declspec( dllexport )
      

  5.   

    原来的.h中:
    class AFX_EXT_CLASS myclass : public CObject
    {
    myclass();
    ~myclass();
    }
    改为:
    class AFX_EXT_CLASS myclass : public CObject
    {
    myclass(){};
    ~myclass(){};
    }
    AFX_EXT_CLASS 应该就是等同于class __declspec( dllexport )
    的作用。我不解的是构造函数和析构函数为什么在.h中写出就不会出错,在.cpp中写就会出错。
      

  6.   

    我想应该是顺序的问题吧!
    在.h中的顺序应该是早于.cpp中的!