2016-07-20 98 views
1

我有一個DLL導出函數。InternetCrackUrl返回FALSE,GetLastError是120

在該函數中的某一點,調用Wininet的InternetCrackUrl()

一切正常,除了一個特定的計算機,上得很好,InternetCrackUrl回報FALSEGetLastError回報120(ERROR_CALL_NOT_IMPLEMENTED)。

我看不出什麼特別的電腦,它是一個臺式機與Win10 PRO。它可以在任何其他地方,在具有不同Windows版本的不同計算機上運行,​​甚至可以在裝有Win10的其他計算機上運行。

我也做了一個測試獨立應用程序,只調用InternetCrackUrl,這也使得我相信它必須是關於DLL的東西。

我還有什麼可以檢查的想法嗎?

+4

「InternetCrackUrl()」在DLL中調用時出現此錯誤並沒有任何意義,但在同一臺機器上的應用程序中調用時不會失敗。他們應該在相同的WinInet DLL中調用相同的函數。所以這讓我認爲操作系統內部的故障更加嚴重。也許WinInet在內部使用的依賴關係失敗,並且錯誤冒泡到InternetCraskUrl()中。也許你的DLL或加載它的應用程序有一個並行清單,它加載了與獨立應用程序加載的不同版本的WinInet?或類似的東西。 –

回答

0

我用Process Explorer來檢查加載了哪個WinInet.dll

我發現我的DLL與使用它的應用程序位於同一個目錄中。 在同一個目錄中,還有一些來自1997的古老版本WININET.DLL,有人必須複製那裏,這就是我的DLL加載。

當我刪除舊的WININET.DLL時,System32中的一個被加載,現在它工作。

相關問題