2015-06-26 273 views
0

我的Visual Studio 2013中有一個C++解決方案。 解決方案包含2個項目。一個是Game Engine項目,另一個是Game項目。Visual Studio - 解決方案中的2個項目 - 工作目錄

啓動的默認項目是Game(它是.exe),該項目依賴於Game Engine項目(其中只有Game項目使用的.lib)。

問題是,GameEngine項目總是使用$(ProjectDir)或Game的工作目錄,這是我不想要的。即使它在屬性中表示它將使用GameEngine文件夾的路徑,它最終也不會。

我想讓GameEngine項目代碼使用GameEngine項目文件的工作目錄(當我從它的文件夾加載文件或圖像時)。

請問你能幫我解決這個問題嗎?

+0

你所要求的只是沒有任何意義。 .lib被鏈接到最終的可執行文件,它沒有「工作目錄」。如果你想在不同的遊戲之間共享資源,所有鏈接.lib然後將它們存儲在知名的%appdata%子目錄中。使用後生成事件來複制那裏的文件,使用xcopy/d –

回答

0

這不是項目引用的工作方式。這個想法是在默認項目的$(Outdir)中生成一個完整的工作文件夾 - 在您的示例C:\folder\Game\bin\x64\release或類似文件中 - 您可以稍後將其打包爲安裝程序並分發。

想必您的GameEngine項目代碼在GameEngine的ProjectDir中運行 - 在您的示例C:\folder\GameEngine\bin\x64\release或類似示例中,因爲您希望代碼訪問該目錄中的其他文件。如果是這種情況,您應該將這些文件添加到GameEngine.csproj中,文件名爲Build Action = ContentCopy to Output Directory = Copy if newer(請參見下面的截圖)。然後他們將被複制到遊戲的$(Outdir),您的代碼將能夠訪問它們。

Visual Studio - Content Copy if newer

+0

感謝Jonathan的回覆。我使用C++項目,我不確定我是否具有與上面屏幕截圖中相同的選項。我想包含的「項目」或文件夾包含着色器或紋理,我沒有包含在項目中,它們只是在我的GameEngine.vcxproj – Wrymn

+0

附近的文件夾中。您是對的,我的回答適用於C#項目。這個概念仍然適用 - 你應該知道是什麼讓你的文件(着色器等)包含在GameEngine項目中,所以Game項目知道將它們複製到它的輸出目錄。 – Jonathan

+0

對不起,我在使用Google搜索和搜索,我不知道如何讓圖片中包含「MyFolder/picture.png」的圖片說明,因此即使項目中的代碼作爲我的解決方案中的庫項目,也可以引用該項目中的代碼。 – Wrymn

相關問題