我做了一个动态库,在里面做了一个类CMyClass。然后在应用工程里定义:
CMyClass* myclass=new myclass;
delete myclass;结果在delete时程序出错。我把CMyClass类中的所有函数、变量都删掉,剩一个空壳,仍然出错,因此我断定不是类的编写有问题。使用动态库里的类还有什么讲究吗?
CMyClass* myclass=new myclass;
delete myclass;结果在delete时程序出错。我把CMyClass类中的所有函数、变量都删掉,剩一个空壳,仍然出错,因此我断定不是类的编写有问题。使用动态库里的类还有什么讲究吗?
解决方案 »
- 下面几个宏的意思和用法,求真心解释
- 关于 CXTPReportControl DragDrop
- 为什么总是跳出 insert into语法错误!急急急急急急急急急!
- 对一个选定的数据库进行再次操作的问题?
- 可以在没有dll文件源码的情况下将其与别的资源(如test.cpp)整合并重新编译成dll吗?
- 请大家告诉我怎样用EXCEL
- 不得不说说中国的编书人!!!
- 如何隐藏 List-view Item
- 共享数据的算法问题(在线讨论)
- vc++的出错信息如何解决
- 串口操作放在access里的数据怎样copy到excel里打印出来!!高手请进!!
- 如何使用ADSI,列举IIS的目录以及其它配置信息,急!
CMyClass* myclass=new CMyClass;
delete myclass;
CMyClass* myclass=new CMyClass;
delete myclass;
但这只是我在提问时的笔误,程序原来就是
CMyClass* myclass=new CMyClass;
delete myclass;
所以问题还没解决。
原在.cpp中
myclass::myclass()
{
}
myclass::~myclass()
{
}
现在.h中
class AFX_EXT_CLASS myclass : public CObject
{
myclass(){};
~myclass(){};
}
居然delete就不会出错了。
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中写就会出错。
在.h中的顺序应该是早于.cpp中的!