cppunit1.12.1 vs2008 vc6 共存

cppUnit中的框架lib文件,在install-win32.txt有说明:

* cppunit (cppunit.lib) : unit testing framework library, the one you use
to write unit tests.

* cppunit_dll(cppunit_dll.dll/lib) : same as above, but build as a DLL.

cppunit.lib  是测试框架的静态链接库版本 (cppunit.lib是release版,cppunitd.lib是debug版)

cppunit_dll.lib和cppunit_dll.dll是测试框架库的动态链接版(同样cppunitd_dll.lib和cppunitd_dll.dll是debug版,不带d的是release版)

 

如果在vs6和vc9中都用静态链接,对于框架库不存在共存的问题, 只要两个编译器分别将lib目录设置正确即可.

如果都用动态链接,可能会有问题,没有尝试,估计也是向testrunner.dll一样没办法解决.

 

所以说如果不需要cppunit的mfc的对话框ui界面,并且用静态库,两个编译器分别用一份cppunit的实例没问题.

 

关键是testrunner, testrunner下的MsDevCallerListCtrl.cpp 第67行 version("7.0") 对于vs2008需要改成version("9.0") 估计vs2005是要改成8.0

所以说对于vc6和vc9, testrunner产生的那四个dll不一样了

cppunit+vc6 用vc9编译出的testrunner 的dll系列会崩溃, 同样

cppunit+vc9 用vc6编译出的testrunner的dll系列会崩溃.

所以需要两个testrunner的dll系列.

 

我的做法是复制一份cppunit1.12.1, 与之在一个目录层次命名为cppunit1.12.1-vs08,这样就有两个cppunit/lib目录.

而这就注定了,如果想要两个编译器都用cppunit的话,共存不会很完美.

如果将cppunit/lib 添加到环境变量path, 那么只能添加一个路径到环境变量,即使添加两个也只会第一个被优先选择.

假如我添加到path中 $somedirectory/cppunit1.12.1/lib;$somedirectory/cppunit.1.12.1-vs08/lib;

我有两个工程用到了cppunit并且用了mfc的ui,分别用vc6和vc9写的.

现在运行vc6的程序,没问题,一切正常.

运行vc9的程序,必然崩溃.

即使去掉环境变量path中的$somedirectory/cppunit.1.12.1-vs08/lib;也是一样. 因为vc9去找testrunnerud.dll在$somedirectory/cppunit1.12.1/lib找到了,那就直接用了

结果就是崩溃.

解决办法就是对于每个vc9的用到cppunit及mfcUI的项目,都把testrunner的四个dll拷到exe所在的debug目录下,寻找dll会优先从本目录开始,这样就不会有问题

但是每个工程都要拷贝一个dll,还是挺烦人得.

添加到公共目录应该是不行的,因为这和环境变量方法一样了,行不通.

 

总之,使用cppunit, 使vc6,vc9都能用, 是可以做到的,只是不完美.

哪位高人有更好的方法,望告知.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值