載入動態庫失敗,返回126錯誤碼

2021-07-11 20:33:38 字數 776 閱讀 9709

用loadlibrary實現動態載入類,花了很多時間在dll的路徑問題上。

在傳入相對路徑時,檔案的查詢順序比較詭異,在xp sp2以後首先是系統目錄開始搜尋,以前是首先從當前目錄開始搜尋。微軟認為當前目錄是不安全的。所以如果很不巧你的system32下有乙個同名的dll時,會造成dll版本的混亂。

解決這個問題,要改用loadlibraryex(path,null,load_with_altered_search_path);

另一種方法是先呼叫setdlldirectory方法,將要設定的目錄會優先開始搜尋。

以上兩種方法是權宜之計,最值得推薦的方法是用絕對路徑而不是相對路徑。要獲得絕對路徑就要知道當前程式的目錄。問題來了,怎麼獲得當前目錄呢?

我當時是一拍腦袋,用了getcurrentdirectory方法。用了才發現,得到的路徑並不穩定,有時候會得到莫名其妙的路徑,甚至在不同電腦上有不同的結果。

正確的解決方法麻煩了許多,要先afxgetinstancehandle()得出模組控制代碼,然後得到當前模組包含路徑的全名getmodulefilename,最後通過字串操作,去掉最後乙個 / 後的內容,才得到當前路徑。

解決了這些問題,loadlibrary路徑沒問題,得到結果卻是0,getlasterror得到126,找不到指定的模組。 我和同事一致認為是dll的其他依賴缺失。用depends開啟這個dll,所有依賴都沒問題啊,why?

後來我試著把dll和依賴放的滿磁碟到處都是,終於找出了問題所在:

解決方法:setdlldirectory方法,設定為plgn1.dll所在的絕對路徑。

http返回錯誤碼

http響應碼響應碼由三位十進位制數字組成,它們出現在由http伺服器傳送的響應的第一行。響應碼分五種型別,由它們的第一位數字表示 1xx 資訊,請求收到,繼續處理 2xx 成功,行為被成功地接受 理解和採納 3xx 重定向,為了完成請求,必須進一步執行的動作 4xx 客戶端錯誤,請求包含語法錯誤或...

APNs連線失敗,返回錯誤碼為0

執行的錯誤資訊為 連線apns伺服器的 如下 load encryption hashing algorithms for the ssl program ssl library init load the error strings for ssl crypto apis ssl load err...

wolfSSL connect失敗錯誤碼 188

記錄 wolfssl使用過程中遇到,呼叫wolfssl connect返回值小於0,wolfssl get error得到錯誤碼為 188 wolfcrypt error crypt.h中對錯誤碼定義為 asn no signer e 188,asn no signer to confirm fai...