在其他项目 visual studio 中使用来自控制台应用程序 class 的 c++ classes
Use c++ classes from console application class in other project visual studio
我正在尝试在 Visual Studio 中为我的控制台应用程序在同一个解决方案中创建一个 gtest 项目。当我从“新项目”向导创建这个项目时,我可以选择我想要测试的项目。所以我 select 我的控制台应用程序。 visual studio 创建 gtest 项目后,我可以在引用下看到我的控制台项目存在。当我尝试示例测试用例时,一切正常。但是当我开始从控制台应用程序中包含我的 classes 时,我收到一个链接器错误,它说我的 class 上的一个符号未解析(LNK_2019)。我知道这一般意味着找到了方法的声明(.h 文件),但找不到定义(编译的 .cpp 文件)。通常,如果出现此错误,我会将 .lib 文件添加到链接器设置中,但控制台应用程序似乎不会输出 lib 文件。有什么方法可以在我的测试项目的控制台应用程序中使用我的 classes 吗?
您应该设计用于测试的应用程序。
将应用程序拆分为两个项目。核心逻辑应该在(静态)库中实现。实际的命令行应用程序只是围绕库中已实现的逻辑的一个小 shell。
现在您可以创建与库链接的测试。请注意,这是一个通用模式,并不限于 gtest 框架。
我正在尝试在 Visual Studio 中为我的控制台应用程序在同一个解决方案中创建一个 gtest 项目。当我从“新项目”向导创建这个项目时,我可以选择我想要测试的项目。所以我 select 我的控制台应用程序。 visual studio 创建 gtest 项目后,我可以在引用下看到我的控制台项目存在。当我尝试示例测试用例时,一切正常。但是当我开始从控制台应用程序中包含我的 classes 时,我收到一个链接器错误,它说我的 class 上的一个符号未解析(LNK_2019)。我知道这一般意味着找到了方法的声明(.h 文件),但找不到定义(编译的 .cpp 文件)。通常,如果出现此错误,我会将 .lib 文件添加到链接器设置中,但控制台应用程序似乎不会输出 lib 文件。有什么方法可以在我的测试项目的控制台应用程序中使用我的 classes 吗?
您应该设计用于测试的应用程序。
将应用程序拆分为两个项目。核心逻辑应该在(静态)库中实现。实际的命令行应用程序只是围绕库中已实现的逻辑的一个小 shell。
现在您可以创建与库链接的测试。请注意,这是一个通用模式,并不限于 gtest 框架。