Visual Studio:在双项目解决方案中包含.h或.cpp

时间:2012-04-01 11:07:41

标签: c++ visual-studio include projects-and-solutions

我有一个包含2个项目的Visual Studio解决方案:主项目和测试(通过googletest)。在主项目中,我有myclass.cpp和myclass.h文件。当我尝试编译测试项目时,当我在test.cpp文件中包含“myclass.h”时,会出现一堆LNK2019错误,但如果我包含“myclass.cpp”,一切正常。这是正常的吗?据我所知,不推荐包含.cpp文件,一般都可以避免。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

这很正常。如果您有2个项目,则会生成2个二进制文件。

不要包含cpp文件

相反,将二进制文件链接在一起。

主项目 - 生成.lib个文件以及.dll.exe

测试项目 - 包含来自main的标头。您需要在测试项目的其他依赖项中添加main生成的.lib。项目设置中的某处 - 链接器选项 - 附加依赖项。


您可以从单个项目生成两个 .exe和.lib文件。要执行此操作,请设置:

    Linker -> General -> Output File 中的
  • exe Linker -> Advanced -> Import Library
  • 中的
  • lib

您可能还需要在.exe项目中使用__declspec( dllexport )标记导出的函数(请参阅docs),否则编译器将不会生成.lib文件。

答案 1 :(得分:1)

使用类的步骤形成另一个项目(添加标题和解算器链接器错误)

1)为了能够从另一个项目中添加标题,首先转到" Properties> c ++>一般>其他包含目录" 并添加包含标题的目录。现在,您将能够从其他项目添加该类的标题,但运行该项目仍将导致链接器错误。

2)在您用于其他项目的课程之前添加_ _declspec(dllexport)。这可以添加到该类的头文件中。这应该在函数或变量或类名之前添加。现在您将获得一个lib文件。 (如果放在错误的地方,您可以收到此警告:https://msdn.microsoft.com/en-us/library/eehkcz60.aspx

3)"属性>链接器>其他图书馆目录" 。指定生成的lib文件的位置。

4)"属性>链接器>输入>附加依赖项“:添加lib文件的名称。