2011-11-27 57 views
0

我在使用SDL的C中創建了屏幕保護程序。我把它放在System32以及它使用的圖片文件夾和SDL.dll中,但當我嘗試運行它時遇到錯誤。它無法找到SDL.dll!它可以在其中包含SDL.dll的任何其他文件夾中運行。爲什麼不是System32?我甚至不試圖將其作爲屏幕保護程序運行。當我右鍵點擊它並點擊「測試」它說它找不到SDL.dll。哪裏不對?我該怎麼辦?依賴於文件的屏幕保護程序C

回答

1

SDL.dll放在PATH的某處。 Windows需要能夠找到它,並且它不知道要查看您創建的文件夾。

你可以告訴Windows的外觀的DLL通過讀取LoadLibrary的文檔:

第一個目錄搜索是包含用於創建調用進程(有關詳細信息的圖像 文件的目錄,請參閱 CreateProcess函數)。這樣做可以在沒有 的情況下找到與進程關聯的庫(DLL)文件的私有動態鏈接 將進程的已安裝目錄添加到PATH環境 變量中。如果指定了相對路徑,則整個相對路徑爲 附加到DLL搜索路徑列表中的每個標記。要從相對路徑加載模塊 而不搜索任何其他路徑,請使用 GetFullPathName獲取非相對路徑並使用非相對路徑調用LoadLibrary和 。有關DLL搜索順序的更多信息,請參見Dynamic-Link Library Search Order, 。

+0

啊,謝謝。我想我可能需要去尋找並修改sdl_main.lib的代碼 –

+0

爲什麼你需要修改庫?這是一個Windows API問題,更改庫源不會解決任何問題。您需要a)將DLL安裝到Windows \ System32文件夾中,或者b)將DLL的文件夾添加到系統'PATH'中。 –

相關問題