访问Visual Studio 2019中另一个项目中的cpp文件



我在解决方案图中有两个c++项目(Visual Studio Community Edition 2019),称为Game(e)和Tester。Tester是Game的子目录。这两个项目都会创建exe文件。项目Game有两个cpp和两个头文件(Foo.cpp, Foo.h, Foo2.cpp和Foo2.h)。

Foo有两个方法add1和add2。Foo2有一个方法plus_one。Foo中的add2方法使用了plus_one。在项目Tester中有一个名为Main.cpp的文件。我想在项目Tester中使用来自Gamer的所有文件。我加了"……"到"附加包含目录"这样我就可以在TesterMain.cpp中包含Foo.h。我添加了一个参考游戏。问题是链接器不喜欢它:

Error   LNK2019 unresolved external symbol "public: int __thiscall Foo::add(int,int)" (?add@Foo@@QAEHHH@Z) referenced in function _main
Error   LNK2019 unresolved external symbol "public: int __thiscall Foo::add2(int,int)" (?add@Foo@@QAEHHH@Z) referenced in function _main

有人知道怎么修理它吗?一种解决方案是将这两个pcp文件导入到Tester项目中。但我无法接受这个解决方案。我对不导入所有cpp文件的解决方案感兴趣。我已经把它上传到github: github Link

一种可能的方法是直接添加所需的目标文件作为Tester项目的链接器输入。

  1. 右键单击Tester项目打开属性页,然后单击Properties

  2. 先选Linker再选Input

  3. Additional dependencies添加(通过Edit…)<一口>*:

    $(SolutionDir)$(Platform)$(Configuration)Foo.obj
    $(SolutionDir)$(Platform)$(Configuration)Foo2.obj
    

一切都应该如期进行。由于主项目是Tester的一个依赖,VS将在尝试构建Tester之前构建它(如果需要),这足以确保对象将是最新的。


*该路径为主工程中间目录路径。由于您选择将主项目和解决方案放在同一个文件夹中,因此路径直接是解决方案路径。如果主项目在自己的文件夹中,则必须将该文件夹添加到路径中。

最新更新