2009-08-25 106 views
2

如何在MS Visual Studio 2008(我使用C++编程)中的2个项目之间共享源代码?
就我而言,我有主游戏项目的代码,现在我想制作一个使用游戏代码的简单模型编辑器,以便每当我在一个项目中更改/添加一些代码时,它将在第二个一。在项目之间共享源代码[VS2008,C++]

回答

8

这样做的常用方法,(你到处都会看到它在开源软件包),就是将所有头文件打包到一个'包含'文件夹中,并将所有的头文件打包到'源'文件夹中。

现在在任何需要代码的项目中,您可以进入'项目属性 - > c/C++ - >常规 - >其他包含目录'。然后将路径添加到“包含”目录。最后,将源代码/头文件添加到您的项目中,现在两个项目都引用完全相同的文件,这些文件位于不错的共享位置。

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

+0

+1的动态链接,符合“每当我改变/在一个项目中,将在第二个更新中添加一些代码”的规定 – 2009-08-25 18:09:20

+1

记住,动态链接(DLL),如果STL数据类型('的std :: VECTOR','的std :: string'等)的公共接口上使用,那么库项目和使用必须连接到标准库的同一版本(VS2008)项目。如果有任何不匹配,程序将以难以处理的方式崩溃。 – rwong 2013-02-25 20:06:14

1

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

(我不是一个C++开发者,但上述工程C#项目,我会假设它为C++项目也是如此)

0

你基本上有两种选择:

  1. 创建静态库。在这里,库中的所有代码将被导出并且可以被谁链接到这个库。
  2. 创建一个DLL:在这里,你可以定义你想要导出和使用的类和方法。

假设你有一个类classA,它在classA.h中定义并在classA.cpp中实现,并且你希望从两个不同的应用程序(应用程序B和应用程序C)使用同一个类。

使用方法1,您将创建一个静态库,方法是转到file-> new win32项目,并在弹出的框中选择应用程序设置并将其设置为“静态库”。然后在这个静态库中添加你的classA.h和classA.cpp。

要在应用程序B或C中使用此静态库,请转到引用并添加对刚创建的静态库项目的引用。然后在你的应用程序中包含classA.h(不要忘记设置额外的包含目录路径),并且你很好。

该方法对于DLL也非常相似,这里的区别在于,您可以选择导出DLL中代码的哪些部分(即对外部调用者可见)。

从整体角度来看: 使用静态库方法,您的代码将被编译到两个应用程序中。

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