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

该体系结构从概念上看如下图:

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

每个应用程序(AppA,AppB)驻留在不同的解决方案中,以使内容清晰分开。

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

例如对于AppA,我会;
  • 包括LibA,LibCommon,LibX和LibY的项目;
  • Additional Include Directories属性
  • 中添加LibA和LibCommon的路径
  • 在主应用程序中添加对LibA和LibCommon的引用,然后在LibCommon项目中添加对LibX和LibY的引用。

  • 我的第一个问题是:有没有办法只导入应用程序直接需要的库? (LibA和LibCommon)

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

    最佳答案

    您实际上并不需要包含这些库的项目。编译器只需要.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文件创建或复制到某个中央lib目录,然后该中央lib目录可能是您唯一要添加的lib目录。

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

    10-08 11:57