如何在MS Visual Studio 2008(我使用C++編程)中的2個項目之間共享源代碼?
就我而言,我有主遊戲項目的代碼,現在我想製作一個使用遊戲代碼的簡單模型編輯器,以便每當我在一個項目中更改/添加一些代碼時,它將在第二個一。在項目之間共享源代碼[VS2008,C++]
回答
這樣做的常用方法,(你到處都會看到它在開源軟件包),就是將所有頭文件打包到一個'包含'文件夾中,並將所有的頭文件打包到'源'文件夾中。
現在在任何需要代碼的項目中,您可以進入'項目屬性 - > c/C++ - >常規 - >其他包含目錄'。然後將路徑添加到「包含」目錄。最後,將源代碼/頭文件添加到您的項目中,現在兩個項目都引用完全相同的文件,這些文件位於不錯的共享位置。
您也可以將共享代碼構建爲靜態庫或更好(IMO)DLL。這涉及到創建一個新項目,並在VS 2008中學習一些關於鏈接器的知識,但其實並沒有太複雜。這也有好處(對於DLL),兩個項目不會重新編譯相同的代碼,而是編譯一次並使用兩次。
您可以將所需的類移動到單獨的庫項目中,然後從第二個項目中引用它。任何更改將自動提取。
(我不是一個C++開發者,但上述工程C#項目,我會假設它爲C++項目也是如此)
你基本上有兩種選擇:
- 創建靜態庫。在這裏,庫中的所有代碼將被導出並且可以被誰鏈接到這個庫。
- 創建一個DLL:在這裏,你可以定義你想要導出和使用的類和方法。
假設你有一個類classA,它在classA.h中定義並在classA.cpp中實現,並且你希望從兩個不同的應用程序(應用程序B和應用程序C)使用同一個類。
使用方法1,您將創建一個靜態庫,方法是轉到file-> new win32項目,並在彈出的框中選擇應用程序設置並將其設置爲「靜態庫」。然後在這個靜態庫中添加你的classA.h和classA.cpp。
要在應用程序B或C中使用此靜態庫,請轉到引用並添加對剛創建的靜態庫項目的引用。然後在你的應用程序中包含classA.h(不要忘記設置額外的包含目錄路徑),並且你很好。
該方法對於DLL也非常相似,這裏的區別在於,您可以選擇導出DLL中代碼的哪些部分(即對外部調用者可見)。
從整體角度來看: 使用靜態庫方法,您的代碼將被編譯到兩個應用程序中。
使用DLL方法,將只有共享代碼的一個副本(在DLL中,這將是一個單獨的文件),這將根據需要加載。
- 1. 在幾個項目之間共享c#類源代碼
- 2. 在項目之間共享代碼庫
- 3. Gradle多項目 - 共享項目之間的源代碼
- 4. 在兩個項目之間共享源代碼?
- 5. 在兩個Netbeans項目之間共享源代碼
- 6. 如何共享項目之間的代碼和資源
- 7. Eclipse項目之間的共享資源
- 8. 在SQL Server和庫項目之間共享空間代碼
- 9. C# - 項目間共享資源文件
- 10. 在git中共享兩個項目之間的代碼
- 11. 在PC和筆記本之間共享項目的代碼
- 12. 我如何在git項目之間共享基本代碼?
- 13. 在Qt項目之間共享代碼文件
- 14. 在GAEJ和Android項目之間共享代碼
- 15. 如何在兩個項目之間共享代碼?
- 16. 在兩個不同的git項目之間共享代碼
- 17. 在tfs 2010中的項目之間共享代碼
- 18. 如何在我的項目之間共享代碼?
- 19. 如何在兩個GWT項目之間共享代碼?
- 20. 如何在2個項目之間共享WinForms和代碼
- 21. Xamarin在iOS,Android和Core項目之間共享代碼
- 22. 在多個項目之間共享核心代碼庫
- 23. 在幾個Access 2013項目之間共享VB代碼
- 24. 在iOS和Android項目之間共享代碼
- 25. 在多個Xcode + PhoneGap項目之間共享代碼
- 26. 在沒有svn的項目之間共享代碼:externals
- 27. 在沒有dll的2個項目之間共享代碼
- 28. 如何在多個GWT eclipse項目之間共享代碼?
- 29. 在Android Studio中的2個項目之間共享代碼
- 30. 兩個C#項目共享代碼
+1的動態鏈接,符合「每當我改變/在一個項目中,將在第二個更新中添加一些代碼」的規定 – 2009-08-25 18:09:20
記住,動態鏈接(DLL),如果STL數據類型('的std :: VECTOR','的std :: string'等)的公共接口上使用,那麼庫項目和使用必須連接到標準庫的同一版本(VS2008)項目。如果有任何不匹配,程序將以難以處理的方式崩潰。 – rwong 2013-02-25 20:06:14