从VC+引用类+。来自单元测试.EXE项目的EXE项目 我有一个老的C++应用程序,我正在尝试编写一些单元测试。我在我的解决方案中创建了第二个项目,该项目构建为单元测试可执行文件(使用googletest)。测试项目引用主项目中的头文件。在我尝试使用主项目中的一个类之前,测试项目构建得很好 #include "stdafx.h" #include "JsContext.h" #include "gtest/gtest.h" TEST(JsContextTests, CreateJsContext) { JsContext context; // linking fails as soon as this line is added }

从VC+引用类+。来自单元测试.EXE项目的EXE项目 我有一个老的C++应用程序,我正在尝试编写一些单元测试。我在我的解决方案中创建了第二个项目,该项目构建为单元测试可执行文件(使用googletest)。测试项目引用主项目中的头文件。在我尝试使用主项目中的一个类之前,测试项目构建得很好 #include "stdafx.h" #include "JsContext.h" #include "gtest/gtest.h" TEST(JsContextTests, CreateJsContext) { JsContext context; // linking fails as soon as this line is added },c++,unit-testing,visual-c++,C++,Unit Testing,Visual C++,生产 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:\Projects\Js-Clean\src\Debug\tests.

生产

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:\Projects\Js-Clean\src\Debug\tests.exe    tests
主可执行文件没有生成.lib文件,因此我不确定应该将测试项目链接到什么


从另一个EXE项目中单元测试类的最佳方法是什么?

如果您的主项目没有生成库,您需要链接从
JsContext.cpp
生成的
.obj
文件,或者链接到
JsContext.h
的源文件。但是,将主项目更改为构建到静态库而不是可执行库中应该很简单。您可以在项目属性中的配置->常规->配置类型下执行此操作

如果构建静态库是不可能的,我认为最好的选择可能是在测试项目中重新编译源文件;您可以添加一个“主项目依赖项”过滤器,并且只包含您正在测试的内容所需的源文件

如果不可能,作为最后的手段,您可以使用预链接事件将相关的
.obj
文件从主项目的输出目录复制到测试项目的输出目录,但我不建议这样做