从单元测试.EXE项目引用VC++.EXE项目中的类
Referencing classes from an VC++ .EXE project from a unit tests .EXE project
我有一个旧的遗留C++应用程序,我正在尝试为它编写一些单元测试。我在解决方案中创建了第二个项目,该项目构建为单元测试可执行文件(使用谷歌测试)。测试项目引用主项目中的头文件。测试项目构建良好,直到我尝试使用主项目中的一个类。
#include "stdafx.h"
#include "JsContext.h"
#include "gtest/gtest.h"
TEST(JsContextTests, CreateJsContext) {
JsContext context; // linking fails as soon as this line is added
}
生成。。
Error 1 error LNK2001: unresolved external symbol "public: __thiscall JsContext::JsContext(void)" (??0JsContext@@QAE@XZ) JsContextTests.obj tests
Error 2 fatal error LNK1120: 1 unresolved externals D:ProjectsJs-CleansrcDebugtests.exe tests
主可执行文件没有生成.lib文件,所以我不确定应该将测试项目链接到什么。
对另一个EXE项目中的类进行单元测试的最佳方法是什么?
如果您的主项目没有生成库,则需要链接到从JsContext.cpp
生成的.obj
文件,或者任何具有JsContext.h
源的文件。然而,将主项目更改为构建为静态库而不是可执行库应该是微不足道的。您可以在项目属性的配置->常规->配置类型下执行此操作。
如果构建静态库是不可能的,我认为您的最佳选择可能是重新编译测试项目中的源文件;您可以添加一个"主项目依赖项"筛选器,并且只包括测试所需的源文件。
如果这不可能,作为最后的手段,您可以使用预链接事件将相关的.obj
文件从主项目的输出目录复制到测试项目的输出路径,但我不建议这样做。
相关文章:
- 项目名称.exe 已触发断点
- 是否可以将 EXE 文件作为 lib 文件链接到另一个项目?
- 从Visual Studio项目到文件.exe(Qt)
- 如何将一个 exe 项目链接到另一个 exe 项目中的类
- 如何将本地文件嵌入从C 项目生成的EXE文件中
- 我的C++项目找不到.exe
- 在Visual Studio 2017中使用Qt库的CMake项目:运行exe时找不到Qt dll
- c++ 将项目导出到 exe
- 更改.exe文件版本(从C++项目)
- 如何将.EXE从C 项目复制到C#项目的输出目录
- 如何使用x64编译器使用MsBuild.exe编译大型c++项目
- 测试项目.exe触发了断点
- 通过 WIX 安装程序安装带有 CLI 项目 EXE 的 C# 不起作用
- 如何将用 c/c++ 编写的 exe 引用到 c# 项目
- 如何将EXE项目用作DLL
- 项目 1.exe 已无故停止工作 (C++)
- 项目.exe在系统("pause")之后触发了断点
- 如何在中等规模的项目中诊断g ++错误"cc1plus.exe: out of memory allocating 838860800 bytes"?
- 如何编译项目后不运行exe文件
- C++ 一个解决方案两个项目(EXE & DLL)链接错误