匯入外掛程式報「找不到模組」

2021-06-18 08:52:29 字數 1028 閱讀 3543

**:

很多時候我們會碰到max載入外掛程式的時候會出現error 126錯誤,也就是找不到相關的模組。出現這種錯誤的時候,max還沒有能夠呼叫到我們寫的相關dll的入口函式,因此不適合用我們除錯外掛程式**的方式。這裡我們從根本上來看一下這個錯誤,繼而來用相關的工具來解決此問題。

錯誤中的找不到模組(如果是英文版,則是module),根本上來說是找不到一定的dll檔案。原理上,我們寫的每個外掛程式本身是乙個dll,在鏈結器鏈結**的時候,寫進不少這個dll需要哪些其他的dll來伴隨執行的資訊。因此,相關的載入模組會在程式(作業系統提供相應api)啟動的過程中掃瞄系統路徑和相關的使用者路徑下是否有該dll需要的其他支撐dll(模組),如果有,則載入dll成功,否則,則載入失敗。

從這個原理上來講,max啟動失敗必定是發現載入我們的外掛程式失敗,因此而報錯。因此,我們首先知道是哪個dll缺失了。可惜的是,max並不告訴我們究竟是缺失哪個dll。那麼剩下的問題就是通過相應的方式找到缺了哪個dll。當然,缺失的原因也有兩種,一種是物理檔案不存在,就是整個硬碟上就沒有相應的dll;另外一種是存在相應的dll,但是因為路徑不對,所以,系統程式沒有辦法找到。不管如何,我們需要首先來定位相應缺失的是什麼。

這裡有個工具,工具名字叫dependency walker,這個工具能開啟我們的模組檔案,然後查詢相關的依賴資訊。用法很簡單,file | open,找到我們的外掛程式檔案開啟就可以。如下介面:

看上圖,所有的被dependicy walker打上問號的可能是有問題的。注意這裡我說的是可能有問題,因為這個軟體使用的工作目錄等資訊決定了它報出的錯誤資訊的相對正確性。所以,不是每個問號都是真的有問題。但是,有問題的dll(缺失的dll)一定包含在問號列表之中。因此,這個軟體非常有用的地方是,能幫我們列出模組,並縮小模組的範圍。

關於工具就這麼多,此工具足夠了。

如果遇到此類問題,解決方式就相對簡單了。執行dependency walker,看一下這個dll需要的相關模組。定位出哪個模組可能路徑有問題,或者是缺失。然後解決這個問題就可以。解了這個問題後,剩下的問題就可以用偵錯程式解決。對於開發人員來說,「原始碼之前了無秘密」,到偵錯程式裡就是個人造化了。 

c DllImport 找不到指定模組

兩年前的乙個專案,基於身份證閱讀器的開發,之前都是在公司電腦上開發維護等,今天有需要用到自己的筆記本,只有vs2008和mysql5.5,以為足夠,興致勃勃的拿到客戶那裡現場解決問題,f5執行程式,程式丟擲異常 無法載入synidcardapi.dll 找不到指定的模組 網上找了半天資料,大概一下解...

python找不到os模組 python之os模組

在自動化測試中,經常需要查詢操作檔案,比如說查詢配置檔案 從而讀取配置檔案的資訊 查詢測試報告 從而傳送測試報告郵件 經常要對大量檔案和大量路徑進行操作,這就依賴於os模組,所以今天整理下比較常用的幾個方法。網上這方面資料也很多,每次整理,只是對自己所學的知識進行梳理,從而加深對某個模組的使用。1....

解決靜態庫檔案匯入 找不到問題

記錄一下 在匯入libbpush.a檔案時候,對照的官方的demon都正常的操作,報錯類似於 undefined symbols for architecture armv7 x referenced from normalizedir std string in libbpush.a xx.o 這...