C++ 在其他静态库中引用静态库(Visual Studio 2010)

C++ 在其他静态库中引用静态库(Visual Studio 2010),c++,visual-studio-2010,static-libraries,static-linking,code-reuse,C++,Visual Studio 2010,Static Libraries,Static Linking,Code Reuse,为了能够通过多个应用程序重用代码段,我决定创建我经常需要的函数/类的静态库。因此,我可以更改静态库的代码,并且引用该库的所有应用程序都有更新的函数 该体系结构在概念上如下图所示: AppA -> LibA \ -> LibCommon -> LibX / -> LibY AppB 每个应用程序(AppA、AppB)驻留在不同的解决方案中,以使内容清晰地分开 为了在Visual Studio 2010中充分发挥作用,

为了能够通过多个应用程序重用代码段,我决定创建我经常需要的函数/类的静态库。因此,我可以更改静态库的代码,并且引用该库的所有应用程序都有更新的函数

该体系结构在概念上如下图所示:

AppA -> LibA
     \
      -> LibCommon -> LibX
     /             -> LibY
AppB
每个应用程序(AppA、AppB)驻留在不同的解决方案中,以使内容清晰地分开

为了在Visual Studio 2010中充分发挥作用,我必须在其解决方案中添加应用程序使用的每个库的项目,在
附加Include目录中添加包含其头文件的文件夹,并添加对直接使用的项目的引用

为了阿帕,我愿意

  • 包括LibA、LIBCOMON、LibX和LibY的项目
  • 附加包含目录
    属性中添加LibA和LibCommon的路径
  • 在主应用程序中添加对LibA和LibCommon的引用,然后在LibCommon的项目中添加对LibX和LibY的引用
  • 我的第一个问题是:有没有办法只导入应用程序直接需要的库?(LibA和LibCommon)


    我的第二个问题:在VisualStudio2010中有没有更好的方法来轻松管理可重用代码?(这里是初级程序员!)

    您实际上不需要包含那些lib的项目。编译器只需要.h文件,链接器只需要.lib文件。我要做的是首先以固定的目录结构组织libs项目。然后,我会在LibCommon.h中添加以下内容:

    #include "LibXDir/LibX.h"
    #include "LibYDir/LibY.h"
    #ifdef _DEBUG
    #pragma comment (lib, "LibCommon.lib")
    #pragma comment (lib, "LibXDir/Debug/LibX.lib")
    #pragma comment (lib, "LibXDir/Debug/LibY.lib")
    #else
    #pragma comment (lib, "LibCommon.lib")
    #pragma comment (lib, "LibXDir/Release/LibX.lib")
    #pragma comment (lib, "LibXDir/Release/LibY.lib")
    #endif
    
    有了这个,你只需要在你的应用程序中包含LibCommon.h,它就会负责引入其余的lib。根据您的设置,您可能需要设置附加的include和library目录。或者,您可以创建所有的.lib文件或将其复制到某个中心lib目录,该目录可能是您必须添加的唯一lib目录


    我假设您在处理应用程序时不会修改libs。如果是,则必须在更改LIB后重新创建它们,这可以通过将它们的项目添加到解决方案中来实现。但是您仍然可以在单个文件上设置大多数依赖项,而不是在项目设置上。

    只需添加@eran发布的正确答案:

    您可以在属性、属性->配置属性->VC++目录->包含目录中包含路径。
    您可以在属性、属性->配置属性->VC++目录->库目录中包含库路径。

    第一段让人觉得您实际上想要动态库-通过静态链接,您必须重建使用库的所有应用程序以获得更新的功能。这真的是你想要的吗?另外,如果函数在库中,则包括相关的头并链接库,不应该将库项目放入每个解决方案中。我想你可能是对的,我起初不想将DLL与我的项目一起使用,但我的项目从一开始就有了发展。我将研究静态链接的动态库,你知道我应该从哪里开始吗?我知道有一种方法可以让我不把项目和LIB一起包括进去,我只是不知道怎么做。非常感谢!这正是我需要的!