c++单元测试本机c++
C++ Unit Test Native C++
首先介绍一下背景:
在工作中,我继承了一个大型c++程序(一种我已经12年没有广泛使用过的语言)。为了帮助自己更好地理解应用程序以及它是如何组合在一起的,我想,"我喜欢TDD,为什么不写一些单元测试呢!"此后,我花了两天时间编译了一个简单的单元测试。我在它到达链接器的地方,但我得到了以下错误:
CIniReader* reader = new CIniReader("");
Error 3 error LNK2019: unresolved external symbol "public: __thiscall CIniReader::CIniReader(char *)" (??0CIniReader@@$$FQAE@PAD@Z) referenced in function "public: void __clrcall ApogeeTests::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@ApogeeTests@@$$FQ$AAMXXZ) C:UserschampadDocumentsApplicationsLeading HedgesrcApogee.TestsUnitTest1.obj Apogee.Tests
现在,我可以通过将项目设置为静态库来解决这个问题,而不是DLL项目(属性->配置属性->通用->配置类型)。
我的问题是:我必须这样做吗?似乎必须有一种方法,让链接器在编译时识别它需要的功能,而不必在我想进行单元测试时不断地将所有24个项目切换到lib,并在我需要部署它时返回。
任何想法吗?
虽然不是我想要的,但这是我正在做的,除非有人有更好的建议!
我添加了一个新的项目配置,并称之为UnitTesting。在这种配置下,所有的c++项目都是单元测试项目可以引用的静态库。我想在部署之前更改配置,这样我就容易记住了。
虽然不理想,但这是有效的。但如果有更好的方法,请让我知道!
Visual Studio为您创建的每个DLL创建一个静态库,特别是用于与客户端代码的链接。
如果您的项目有以下模块:
core-functionality.dll
unit-tests.exe
那么你的unit-tests.exe将使用LoadLibrary和family从core-functional .dll加载api,并将结果函数指针转换为正确的类型(这很难看,容易出错且难以维护),或者它可以静态地链接到core-functional。lib(这应该在构建core-functional .dll期间生成)。
我想你是在寻找第二个选择。
相关文章:
- 从C++本机插件更新Vector3数组
- GCC本机矩阵运算库
- VC++本机单元测试,找不到调试符号
- 在这种情况下,java对象是否可以调用本机函数
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 无法将标准库导入本机 android 项目中的头文件
- 使用本机 C++ 应用程序中的 C# 代码
- 在nodejs中使用本机代码的最佳方法是什么?
- 如何告诉本机节点模块所需的dll存储在哪里?
- 在自定义程序中使用本机 Windows 自然顺序排序
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- MS 本机单元测试 - 断言::线程失败不起作用
- 将音频从浏览器流式传输到WebRTC本机C++应用程序
- Winapi - SetWindowLongPtr in ShutdownBlockReason创建/销毁JNI本机代码
- C++/CLI 混合托管/本机 DLL 不起作用
- 子系统中的异常处理:本机
- 多次调用本机方法时出现致命错误
- 如何使用 Malloc 调试来检查本机内存泄漏?
- 使用本机 JNI 静态方法实现C++ Java 运行时错误