2009-08-25 107 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中,這將是一個單獨的文件),這將根據需要加載。