C++ Import to LabVIEW

午安~各位前輩 :slight_smile:

我這邊面臨要把C++的dll檔匯入到LabVIEW做相關測試 , 目前用Tools / import / shard library 功能匯入
但是匯入後執行時發生error"The library specified for this node cannot be found or cannot be loaded…"(如下圖)

我這邊C++的知識非常不足:sweat:
(C++ , LabVIEW都是32bit)
附上C++的.h程式碼 :

目前蒐集到的資訊指向C++很多語法LabVIEW無法編譯 , C++程式要做些修改才行(不知道這方向對不對?)

再麻煩各位幫我看看

Thanks~

您好,可以先試試看點開Call Library Function(橘色那個元件),看看設定的DLL路徑對不對。
如下圖,什麼接腳都不設定,直接設定DLL路徑,找到function,也不應該有斷箭頭才對。


一般來說參數錯誤,只有在執行階段會出錯,在開發階段就出現斷箭頭的話,通常是設定有問題。

Labview在Call DLL部分的確有很多地方有點麻煩,如果資料型態太複雜,i.e.array內有structure,structure內又有array,array內又有structure,用內建精靈只能解到第一層,第二層之後必須自己解,如果你的DLL有source code還好辦,沒有的話就只能慢慢try了,然後執行期間只要一出錯,又跟call by reference有關的話,很容易就會看見久違的藍白畫面了。

感謝D大回覆 :

早先有試過拉出"Call Library Function Node"手動設定裡面參數 , 但結果跟Tools / Import一樣無法執行 QQ

請教下 如果找到source code的話 , 該注意哪些地方呢?

Thanks~

看你能不能上傳或私信這個斷箭頭的vi跟DLL,我試試看,但是32bit的我只有2013跟2015,如果你的版本比較新可要先降labview版本。

實際要注意什麼也很難說,我還沒那麼會算命XD,但是看起來這個connect的function感覺可以直接call。

我們這邊先重新Build一次C++試試看

後續再看有甚麼進展

Thanks~

你是用import shared library這工具?

可能是LabVIEW認不得s_kvm_viewer這個自定義型別。

不然你第二頁,選擇dll檔案時,

底下有個Shared library file is not on the local machine打勾試試?

Shared library file is not on the local machine 的勾勾也有用過了QQ

我發現我們的C++程式是dll呼叫dll , ex : a.dll 呼叫 b.dll 再呼叫 c.dll…
目前在排查C++程式裡有沒有甚麼沒定義到and少掉某個dll 導致LabVIEW無法執行

Thanks~

經過幾10天後有些階段性的進展跟大家報告下

先說成果就是 , 把這支C++帶回"家裡桌電"是可以執行的(如下圖)

但是把程式拿到"家裡筆電"又無法執行 , 當下認為是兩台電腦Window的dll庫存不同導致
於是就把家裡桌電有的 .NET Framework , SDK , Visual C++ Redistributable 家裡筆電也都安裝完 , 還是無法執行

目前有想到兩個方向

  1. 這支C++程式是3~4年前寫的 , 當時可能不是Win10 (我的桌電 筆電目前都是win10 , LabVIEW2018) , 這部分不知道有沒有關係
  2. LabVIEW好像有跟Visual Studio連結的相關套件 , 後續再試看看有沒有用

有興趣的朋友可以一塊討論~

Thanks~