[英]“SDL2.DLL missing from computer” but is in the same folder as program?
SDL文件夾在同一目錄中:
SDL文件夾的內容:
我無法運行我的程序,因為它說找不到SDL2.DLL? 有任何想法嗎?
程序不會在整個硬盤上搜索DLL。 那將是昂貴的,非常不安全的,並且容易出錯。
相反,它們具有搜索路徑,這取決於您如何加載它。 通常,將PATH
環境變量與其他各種系統位置以及加載動態庫的進程的目錄一起使用。
該列表很少包含“進程可執行文件的子目錄,稱為SDL
”。 但是,您可以修改搜索路徑。 具體取決於您如何嘗試加載SDL。
一種簡單的解決方案是嘗試將它們全部復制到同一目錄中。
您可以使用構建后事件將sdl2.dll
復制到構建 .exe
的目錄中。 手動復制文件可以進行快速測試,但是使用Visual Studio進行復制有一些好處。 例如,這使您可以完全刪除Debug
和Release
目錄,並在執行干凈構建時復制正確的文件。
在您的目錄列表中,我看到了SDL
目錄中的bin32
和bin64
目錄。 我假設每個目錄中sdl2.dll
直接包含sdl2.dll
的副本,但是沒有單獨的調試和發行版本,只有32位和64位。 如果這不正確,請告訴我,否則,您可以這樣做:
打開解決方案資源管理器,然后選擇您的項目(不是解決方案)。 然后使用Alt + Enter直接轉到“屬性頁”。 (或右鍵單擊該項目,然后在菜單底部選擇“ 屬性 ”。)
在左側的選擇面板中,轉到“ 配置屬性” /“ 構建事件” / “構建后事件” 。
在屬性表的頂部,將配置下拉菜單設置為所有配置 ,並將平台下拉菜單設置為所有平台 。
單擊命令行右側的編輯框,然后輸入以下命令:
copy "$(SolutionDir)SDL\bin$(PlatformArchitecture)\sdl2.dll" "$(TargetDir)"
現在,單擊OK ,然后保存並構建您的解決方案。 您應該發現它sdl2.dll
的正確版本(32位或64位) sdl2.dll
到構建目錄中。
命令行中的各種$(FooBar)
條目都是宏,它們會根據項目目錄位置,要構建的平台類型等自動擴展。
$(SolutionDir)
是包含您的目錄中.sln
文件, 后面帶有一個反彈 。
$(PlatformArchitecture)
是32
或64
具體取決於要構建的平台。
$(TargetDir)
是VS在其中創建.exe
文件的目錄。
因此,此命令行是一條普通的copy
命令,您可能會在命令提示符中使用該命令,並填充了將SDL\\bin32\\sdl2.dll
或SDL\\bin64\\sdl2.dll
到構建目標目錄的SDL\\bin64\\sdl2.dll
。 如果項目路徑中有空格,我們會在源路徑和目標路徑周圍使用引號。
在某些情況下,您可能需要用於特定配置(Debug / Release)或平台(Win32 / x64)的特定命令。 您可以通過在屬性表頂部選擇該配置或平台來執行此操作。 在我們的例子中,由於有了$(PlatformArchitecture)
宏,我們可以對32位和64位版本使用一個命令。
要了解有關宏的更多信息,可以在屬性頁中選擇“ 命令行”框,然后單擊出現在框右側的下拉箭頭,然后選擇<Edit ...> 。 這將打開一個多行編輯窗口(您可以在build事件中使用多個命令),其下面的一個Evaluated值顯示了將用於當前配置和平台的實際命令。 您可以檢查此命令以查看它是否正確,還可以復制評估后的命令並將其粘貼到命令提示符窗口中以進行快速測試。
要查看可用宏的完整列表以及它們針對當前配置/平台的擴展范圍,請單擊其下方的“ 宏>>”按鈕,然后瀏覽列表或使用頂部的搜索框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.