Visual c++ 在项目之间共享源代码[VS2008,C+;+;]

Visual c++ 在项目之间共享源代码[VS2008,C+;+;],visual-c++,Visual C++,如何在MS Visual Studio 2008中的两个项目之间共享源代码(我使用C++编程)? 在我的例子中,我有主游戏项目的代码,现在我想制作一个使用游戏代码的简单模型编辑器,这样每当我在一个项目中更改/添加一些代码时,它就会在第二个项目中更新。您可以将所需的类移动到一个单独的库项目中,然后从第二个项目中引用它。任何更改都将自动拾取 (我不是C++开发者,但是上面的工作对于C++项目来说,我也假定它也适用于C++项目)一个常用的方法,(你会在开源软件包中看到它),是把所有的头文件捆绑到一个“

如何在MS Visual Studio 2008中的两个项目之间共享源代码(我使用C++编程)?

在我的例子中,我有主游戏项目的代码,现在我想制作一个使用游戏代码的简单模型编辑器,这样每当我在一个项目中更改/添加一些代码时,它就会在第二个项目中更新。

您可以将所需的类移动到一个单独的库项目中,然后从第二个项目中引用它。任何更改都将自动拾取


(我不是C++开发者,但是上面的工作对于C++项目来说,我也假定它也适用于C++项目)

一个常用的方法,(你会在开源软件包中看到它),是把所有的头文件捆绑到一个“包含”文件夹中,并把所有的源都放到一个“源”文件夹中。p> 现在,在任何需要代码的项目中,都可以转到“项目属性->c/c++->常规->附加包含目录”。然后将路径添加到“include”目录。最后,将源/头添加到项目中,现在两个项目引用完全相同的文件,它们位于一个整洁的共享位置


您还可以将共享代码构建为静态库或更好的(IMO)DLL。这涉及到创建一个新项目,并在VS2008中学习一点关于链接器的知识,但实际上并不复杂。这还有一个优点(对于DLL),即两个项目不会重新编译相同的代码,而是编译一次并使用两次。

基本上有两个选项:

  • 创建一个静态库。在这种情况下,库中的所有代码都将被导出,并对链接到此库的用户可见
  • 创建DLL:在这里,您可以定义要导出和使用的类和方法
  • 假设您有一个名为classA的类,它在classA.h中定义并在classA.cpp中实现,您希望从两个不同的应用程序(应用程序B和应用程序C)中使用同一个类

    使用方法1,您可以通过进入file->new win32 project创建一个静态库,然后在弹出的框中选择应用程序设置并将其设置为“静态库”。然后在这个静态库中添加classA.h和classA.cpp

    若要在应用程序B或C中使用此静态库,请转到引用并添加对刚才创建的静态库项目的引用。然后在应用程序中包含classA.h(别忘了设置额外的include目录路径),就可以开始了

    这种方法对于DLL也是非常类似的,不同之处在于您可以选择导出DLL中代码的哪些部分(即对外部调用方可见)

    从总体上看: 使用静态库方法,您的代码将编译到两个应用程序中


    使用DLL方法,共享代码只有一个副本(在DLL中,它将是一个单独的文件),并将根据需要加载。

    +1对于动态链接,符合“每当我在一个项目中更改/添加一些代码时,它将在第二个项目中更新”的要求。请记住,对于动态链接(DLL),如果STL数据类型为(
    std::vector
    std::string
    等)在公共接口上使用,则库项目和使用它的项目必须链接到标准库的同一版本(VS2008)。如果存在任何不匹配,程序将以难以处理的方式崩溃。