e********y 发帖数: 66 | 1 我有一个在Visual studio 6 下开发的mfc的dll project,暂且叫它a.dll。现在想用cpputest来对其中每个class做unit test。对这个project不是很了解,主要是对windows的用visual studio开发的东西不熟,文档也没有,开发的人也走了。
这个project本身好像是个类似ocx的dll,它只export了DllGetClassObject,DllCanUnloadNow,DllRegisterServer,DllUnregisterServer这4个函数。这个dll本身好像是给别的ocx控件提供服务的。
为了unit test, 我在这个project中加了一个含有main函数的test.cpp文件,另外新加了一个configuration用来编译成win32 console。在test.cpp的main中调用afxwininit来支持mfc。试着做了一个简单的cpputest测试例来测试其中的某一个class,编译和跑测试例本身好像没问题。但是在程序退出时总有run time error的exception。跟踪进去发现Project中一个CWinApp的全局变量theApp。几乎所有的class中都要调用theApp中的一些函数。在它的析构函数中有用delete来回收内存。主程序退出过程中调用theApp的析构函数时,遇到delete时总是有run time error的exception。我debug下,却并没有发现这是些无效指针,但就是有exception。
我们有另外的一个project能直接调用这个a.dll,我从这调试进去却发现在theApp的析构函数并不出错。这样我就怀疑是不是我新加的configuration弄错了,或者是别的什么。
实在是不懂,想请教一下大家该怎么办?
谢谢 |
x****u 发帖数: 44466 | 2 你最好重新写一下,看了2遍还是不懂。
studio
cpp
【在 e********y 的大作中提到】 : 我有一个在Visual studio 6 下开发的mfc的dll project,暂且叫它a.dll。现在想用cpputest来对其中每个class做unit test。对这个project不是很了解,主要是对windows的用visual studio开发的东西不熟,文档也没有,开发的人也走了。 : 这个project本身好像是个类似ocx的dll,它只export了DllGetClassObject,DllCanUnloadNow,DllRegisterServer,DllUnregisterServer这4个函数。这个dll本身好像是给别的ocx控件提供服务的。 : 为了unit test, 我在这个project中加了一个含有main函数的test.cpp文件,另外新加了一个configuration用来编译成win32 console。在test.cpp的main中调用afxwininit来支持mfc。试着做了一个简单的cpputest测试例来测试其中的某一个class,编译和跑测试例本身好像没问题。但是在程序退出时总有run time error的exception。跟踪进去发现Project中一个CWinApp的全局变量theApp。几乎所有的class中都要调用theApp中的一些函数。在它的析构函数中有用delete来回收内存。主程序退出过程中调用theApp的析构函数时,遇到delete时总是有run time error的exception。我debug下,却并没有发现这是些无效指针,但就是有exception。 : 我们有另外的一个project能直接调用这个a.dll,我从这调试进去却发现在theApp的析构函数并不出错。这样我就怀疑是不是我新加的configuration弄错了,或者是别的什么。 : 实在是不懂,想请教一下大家该怎么办? : 谢谢
|
e********y 发帖数: 66 | 3 改了一下,不知道效果怎么样。怪不得以前老师说我写作文不行,东一句,西一句的。
【在 x****u 的大作中提到】 : 你最好重新写一下,看了2遍还是不懂。 : : studio : cpp
|
x****u 发帖数: 44466 | 4 如果是作unit test的话,应该生成一个空白的工程,然后注册这个组件后调用。
用cpputest来对其中每个class做unit test。对这个project不是很了解,主要是对
windows的用visual studio开发的东西不熟,文档也没有,开发的人也走了。
DllCanUnloadNow,DllRegisterServer,DllUnregisterServer这4个函数。这个dll本
身好像是给别的ocx控件提供服务的。
加了一个configuration用来编译成win32 console。在test.cpp的main中调用
afxwininit来支持mfc。试着做了一个简单的cpputest测试例来测试其中的某一个class
,编译和跑测试例本身好像没问题。
析构函数并不出错。这样我就怀疑是不是我新加的configuration弄错了,或者是别的
什么。
【在 e********y 的大作中提到】 : 我有一个在Visual studio 6 下开发的mfc的dll project,暂且叫它a.dll。现在想用cpputest来对其中每个class做unit test。对这个project不是很了解,主要是对windows的用visual studio开发的东西不熟,文档也没有,开发的人也走了。 : 这个project本身好像是个类似ocx的dll,它只export了DllGetClassObject,DllCanUnloadNow,DllRegisterServer,DllUnregisterServer这4个函数。这个dll本身好像是给别的ocx控件提供服务的。 : 为了unit test, 我在这个project中加了一个含有main函数的test.cpp文件,另外新加了一个configuration用来编译成win32 console。在test.cpp的main中调用afxwininit来支持mfc。试着做了一个简单的cpputest测试例来测试其中的某一个class,编译和跑测试例本身好像没问题。但是在程序退出时总有run time error的exception。跟踪进去发现Project中一个CWinApp的全局变量theApp。几乎所有的class中都要调用theApp中的一些函数。在它的析构函数中有用delete来回收内存。主程序退出过程中调用theApp的析构函数时,遇到delete时总是有run time error的exception。我debug下,却并没有发现这是些无效指针,但就是有exception。 : 我们有另外的一个project能直接调用这个a.dll,我从这调试进去却发现在theApp的析构函数并不出错。这样我就怀疑是不是我新加的configuration弄错了,或者是别的什么。 : 实在是不懂,想请教一下大家该怎么办? : 谢谢
|
e********y 发帖数: 66 | 5 如果这样做的话,能仔细讲讲怎么能对其中的所有类都进行测试了吗?
我也试着用另外一个project直接调用a.dll,但是这个a.dll本身没有export所有的类
,这样链接就有错误了。
class
【在 x****u 的大作中提到】 : 如果是作unit test的话,应该生成一个空白的工程,然后注册这个组件后调用。 : : 用cpputest来对其中每个class做unit test。对这个project不是很了解,主要是对 : windows的用visual studio开发的东西不熟,文档也没有,开发的人也走了。 : DllCanUnloadNow,DllRegisterServer,DllUnregisterServer这4个函数。这个dll本 : 身好像是给别的ocx控件提供服务的。 : 加了一个configuration用来编译成win32 console。在test.cpp的main中调用 : afxwininit来支持mfc。试着做了一个简单的cpputest测试例来测试其中的某一个class : ,编译和跑测试例本身好像没问题。 : 析构函数并不出错。这样我就怀疑是不是我新加的configuration弄错了,或者是别的
|
x****u 发帖数: 44466 | 6 你这个dll是activex,注册后应该用activex的方法调用。一般来说向导生成的都有tlb
,import这个含有tlb的dll,vc可以帮你生成智能指针类。
【在 e********y 的大作中提到】 : 如果这样做的话,能仔细讲讲怎么能对其中的所有类都进行测试了吗? : 我也试着用另外一个project直接调用a.dll,但是这个a.dll本身没有export所有的类 : ,这样链接就有错误了。 : : class
|
e********y 发帖数: 66 | 7 噢,好的,那我再学习学习。有什么教程可推荐的吗?
tlb
【在 x****u 的大作中提到】 : 你这个dll是activex,注册后应该用activex的方法调用。一般来说向导生成的都有tlb : ,import这个含有tlb的dll,vc可以帮你生成智能指针类。
|
x****u 发帖数: 44466 | 8 你最好掌握一些com的基本知识,然后用atl操作起来很容易。
【在 e********y 的大作中提到】 : 噢,好的,那我再学习学习。有什么教程可推荐的吗? : : tlb
|