声明:
本文主要参考博客:
在华为入职前练习的 OJ 项目中,已经设置好部分测试用例,直接用来作为程序调试非常方便。但是 OJ 的项目是在 Visual Studio 2005 环境下建立配置的项目,在 Visual Studio 2012 下并不能直接使用。需要进行重新配置。本文主要介绍在 Visual Studio 2012 环境下完成配置 OJ 项目中的 CppUnit 的配置方法。
具体来说,不能再 Visual Studio 运行的原因是 cppunitd.lib 这个库文件与编译环境不匹配,因此,需要重新编译 CppUnit。具体的 CppUnit 编译方法如下:
- 下载最新的与 OJ 项目匹配的 CppUnit 版本
本人使用的是 CppUnit-1.12.1 ,文件目录如下:
- 编译 CppUnit,获取在当前环境下的 cppunitd.lib 库
具体做法如下:
- 在上图中 src 目录下,用 Visual Studio 2012 打开工程 CppUnitLibraries.dsw提示迁移
- 提示工程迁移时,全部选 “是”,得到下图的项目工程
- 这时,工程直接编译是无法通过的。需要进行三处修改:
- 在工程中,移除 DSPlugIn 项目,因为它只支持 Visual Studio 6.0
- 将 cppunit 设置为 “启动项目”,并在项目的 “属性管理器中”,右键点击 cppunit 将其重名名为 cppunitd,原因是原始项目中设置存在问题
- 在 原 src\msvc6\testrunner 文件下找到 MsDevCallerListCtrl.cpp 文件,将 67行的
- 这时,工程直接编译是无法通过的。需要进行三处修改:
#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("
7.0") lcid("0") raw_interfaces_only named_guids
修改为:
#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("
8.0") lcid("0") raw_interfaces_only named_guids
- 然后,可以编译 CppUnit,在 cppunit-1.12.1\lib 下能够得到编译好的 cppunitd.lib 库
- 将 cppunitd.lib 库复制到 OJ 工程的 cppunit-1.12.1\lib\vc80 文件夹下,覆盖原始工程的 cppunitd.lib 库
- 配置 OJ 工程,完成 CppUnit 配置
具体做法如下:
- 用 Visual Studio 2012 打开 OJ 项目的 Project 文件夹下打开工程
- 提示迁移时,全部选 “是”
- 然后,右键工程选择 “属性”—“C/C++”—“代码生成”—“运行库”,选择“多线程调试DLL”
- 再编译,就能够通过了
最后,感谢前人的帮助!