Visual studio 如何让静态库项目与我的主C++;项目在同一个解决方案中?

Visual studio 如何让静态库项目与我的主C++;项目在同一个解决方案中?,visual-studio,Visual Studio,我正在使用Visual Studio 2017。我想练习将静态库项目添加到现有解决方案中。层次结构如下所示: 解决方案: 控制台实践(C++控制台项目)-(文件:main.cpp) MathLib(静态库项目)-(文件:MathLib.h,MathLib.cpp) 两者都很好 现在我需要他们互相交谈 我希望“Console Practice”从“MathLib”调用函数,例如add(n,n) 我注意到,仅仅调用这个函数是不容易做到这一点的控制台练习“不识别”MathLib.h“ 我如何调用a

我正在使用Visual Studio 2017。我想练习将静态库项目添加到现有解决方案中。层次结构如下所示:

解决方案:

  • 控制台实践(C++控制台项目)-(文件:main.cpp)

  • MathLib(静态库项目)-(文件:MathLib.h,MathLib.cpp)

两者都很好

现在我需要他们互相交谈

我希望“Console Practice”从“MathLib”调用函数,例如add(n,n)

我注意到,仅仅调用这个函数是不容易做到这一点的控制台练习“不识别”MathLib.h“

我如何调用add(n,n)

编辑:

我尝试在链接中使用此解决方案,并将路径添加到库中,并将MathLib.lib添加为对“Console Project”的引用,但它无法在静态库项目中识别我的#include“MathLib.h”文件。我必须复制这个头文件,这是不可取的。我是否可以访问标题而不是将最新版本复制到我的“Console Practice”项目中


在解决方案资源管理器中,主项目应该有一个引用项。右键单击它并添加引用,然后检查静态库项目。注意,这比使用Project、Properties、Linker添加其他库路径要好,因为它还为项目设置了正确的生成顺序

要定位标题,您可以提供主项目中标题的相对路径:

#include "../staticlib/header.h"

或者,在你的主要项目上,转到Project、Projices、C++、附加的目录,并从主项目中添加相对路径到静态库头,例如“代码>…/STATICLIB < /COD> 这两个示例都基于如下所示的文件结构:

MYPROJECT
│   MyProject.sln
│
├───MainExe
│       MainExe.vcxproj
│
└───StaticLib
        Header.h
        StaticLib.vcxproj

可能重复的可能重复的仍然无法解决标题问题。其他包含目录无法识别标头,即使它已通过mathlib.h设置为库的路径。请确保为调试和发布配置设置了其他包含目录,并且路径正确。这与x64项目设置存在平台冲突,主项目设置为x86。#Include“./mathlib/mathlib.h”可以工作。但是,当我将“./mathlib”添加到其他包含目录时,包括“mathlib.h”“导致未找到标头错误。我认为这是由于构建顺序的原因,首先编译了MathLIb项目,然后编译了我的主项目,但在后一个示例中仍然找不到头。将完整的头目录路径添加到Additionnal Include目录也会导致找不到头错误。是因为默认的静态库项目设置在其中添加了一行“#pragma once”吗?到目前为止,我认为情况并非如此。最后一点:作为一个实验,我将头文件复制到我的C:\Libaries\目录中,但在编译时仍然找不到它。奇怪的是,这是否是因为默认的静态库项目添加了stdafx.h/.cpp。@Bob您确定在调试和Telease配置中都设置了额外的包含吗?