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

时间:2012-06-22 19:22:09

标签: c++ visual-studio-2010 static-libraries static-linking code-reuse

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

架构概念上如下图所示:

AppA -> LibA
     \
      -> LibCommon -> LibX
     /             -> LibY
AppB

每个应用程序(AppA,AppB)都存在于不同的解决方案中,以便将内容清楚地分开。

为了在Visual Studio 2010中完全运行,我必须在其解决方案中添加应用程序使用的每个Lib的项目,在Additional Include Directories中添加包含它的头文件的文件夹并添加引用到项目直接使用。

实施例。对于AppA,我会;

  1. 包括LibA,LibCommon,LibX和LibY的项目;
  2. Additional Include Directories属性
  3. 中添加LibA和LibCommon的路径
  4. 在主应用程序中添加对LibA和LibCommon的引用,然后在LibCommon的项目中添加对LibX和LibY的引用。
  5. 我的第一个问题是:有没有办法只导入应用程序直接需要的库? (LibA和LibCommon)

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

2 个答案:

答案 0 :(得分:1)

您实际上不需要包含这些库的项目。您只需要编译器的.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,它将负责引入其余的libs。您可能必须设置其他包含和库目录,具体取决于您的设置。或者,您可以将所有.lib文件创建或复制到某个中心lib目录,这可能是您必须添加的唯一lib目录。

我假设您在处理应用程序时不会修改lib。如果你是,你将不得不在更改后重新创建库,这可以通过将他们的项目添加到解决方案来完成。但是,您仍然可以在单个文件上设置大多数依赖项,而不是在项目设置上。

答案 1 :(得分:1)

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

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