2013-08-23 38 views
0

我準備在今晚進入Ludum Dare,而且我非常沮喪,因爲我無法將我的項目構建爲獨立的.exe。如何用Visual C++構建獨立的SDL項目?

我覺得這個問題已被問過至少100次,但我找到的答案都沒有幫助我......我真的不明白靜態鏈接是什麼或如何去做,這似乎不是我的問題的解決方案;我不介意如果我用我的程序發佈了一堆.dll文件,我只想讓程序自行運行,以便在競爭結束時提交。

基本上,我的視覺工作室(2010 express)的配置完全遵循LazyFoo's tutorial on setting it up。當我從Visual Studio啓動程序時,一切都運行正常,但是當我導航到項目的調試或發佈文件夾並嘗試運行.exe時,程序會中斷關於調用abort()的錯誤,或者他們給我錯誤「X程序已停止工作」。

我將所有的DLL包含在與可執行文件放置在同一文件夾中,而且遊戲在VS內部運行得非常好,但我似乎無法弄清楚如何將它編譯爲獨立的.exe(甚至包括一個完整的dll文件夾),而不會崩潰。

有人可以給我一個非常確切的方式來得到這個工作嗎?任何幫助都會很棒。

+0

它只是瘋了,同一個來源的微軟DLL可以有至少六個不兼容的派生(有更多?)。 –

+1

@DieterLücking:嗯,它被稱爲「DLL地獄」的原因... – rodrigo

回答

2

如果你有一個EXE,那麼你的程序正在編譯。很可能在調試模式下,該程序正在使用特定目錄作爲當前工作目錄(CWD),但是當您將其作爲獨立運行時,CWD是不同的。

CWD影響可以加載的DLL以及搜索任何使用相對路徑的文件(也就是說,不是以[back]斜槓開始)。這可能是你的問題:紋理,圖形,配置文件,字體...

我的建議是在調試運行中設置CWD(有一個選項)與EXE完全相同,這是運行EXE時的默認值。然後你將能夠調試你的崩潰。

+0

唉,謝謝。我感到非常愚蠢,我沒有將我的資源添加到EXE所在的目錄中,所以我的問題只是圖像未被正確加載。謝謝你的幫助! –

相關問題