我在LabVIEW中加載DLL時遇到了問題。
我使用LabVIEW連接流量計,爲此目的,製造流量計的公司已經足夠給我一個子VI庫了。這些子VI中的每一個都從該公司提供的兩個DLL庫中的一個調用函數。Labview 2011中的DLL加載錯誤
因此這些子VI的一半都依賴於一個DLL,而另一半則是依賴於其他DLL。 那些使用第一個DLL工作得很好,並且沒有問題。 但那些使用第二DLL有一些類型的錯誤:我每次打開這些子VI的一個時間,我得到的說,一個彈出窗口:
錯誤加載「絕對路徑\ name.dll」。 DLL庫初始化例程失敗。
然後子VI不可執行,運行按鈕顯示爲破解。但有一個轉折點。如果我在「配置庫函數節點」並選擇配置單擊右鍵,然後重新選擇完全相同的 DLL的絕對路徑在相應的字段,然後單擊確定,子VI運轉很好,準確地完成它應該做的。我實際上並沒有改變節點配置窗口中的任何內容,我只是重新選擇了相同的路徑。更奇怪的是,這個奇怪的「竅門」只有75%的時間才起作用。另外25%的時間,我需要真正關閉VI和其他引用它的VI,然後重新打開它。
然後還有另一種扭曲,使得更少的意義對我說:該公司也給我發了幾個「VI範例」,顯示如何不同的子VI應在相關地使用對方。這些例子運行得非常好!但後來我寫了自己的VI,它是「示例VI」的一個更簡單的版本,並且我不斷收到DLL加載錯誤。
我在做什麼錯了,我該如何確保在VI,而無需每次都重新配置庫功能節點可執行文件?你認爲是什麼導致了這個問題?
N.B:這個問題的部分原因是,我真的不知道如何在LabVIEW中讀取一個DLL工程,等等,任何的信息也將不勝感激。
LabVIEW DLL處理非常簡單,它加載DLL和列表函數。由於不滿意的依賴或DLL初始化失敗,DLL加載(在VI打開時)往往會失敗。你有沒有訪問DLL的源代碼?它是否在[Dependency Walker](http://www.dependencywalker.com/)中正確打開? – CharlesB
不幸的是,我沒有訪問DLL源代碼,但我已經下載了依賴關係的步行者。該DLL似乎打開得很好,雖然我真的不知道依賴關係wlaker會說,如果沒有。有趣的是,我將自己的VI移動到與示例VI相同的目錄中,並且我注意到了這一點:如果我打開示例VI然後是我自己的VI,則不會引發DLL Load錯誤,並且子VI都可以在例子VI和我自己的。但是,如果我打開自己的VI,然後打開示例VI,都會拋出錯誤。這是否意味着什麼? – Art
您是否在重置路徑後保存VI? LabVIEW存儲相對路徑或絕對路徑,可能會混淆。 當你打開VI(壞掉)並且不修復它時,你可以在LabVIEW項目依賴列表中查看路徑。 還要確保在項目的'路徑'部分(在項目窗口中按Ctrl-e)該DLL列在正確的位置。可能是因爲某些依賴項試圖在VI嘗試加載它們之前從另一個位置加載DLL。 –