看板 C_and_CPP 關於我們 聯絡資訊
大家好, 我是labview新手,還沒有處理過C的dll檔案與labview的互相溝通問題,最近工作需要, 我要對labview與C語言的dll檔案之間的溝通問題做些報告。 但是我在網路上只找到關於dll的複雜結構資料型態與labview之間不能溝通的問題,所以 有些人會建議用wrapper的方法將原本C的dll檔案中的複雜結構做拆解,然後做成新的dll 檔案,讓labview使用正確的簡易資料結構。 但是我還是沒有找到確切的wrapper方法實作,只是有個以上的概念而已,不知道版上的 高手是否可以告訴我那邊可以找到這方面完整的資訊? 哪種書可以教我dll包dll的問題? 之前在書店找了一遍,發現市面上的labview書和C語言的書都是滿基本的操作,很少有它 們之間的dll問題描述,不曉得在labview與C的dll溝通的時候,除了以上資料結構不同的 問題之外,還有那些問題會發生在labview與C的dll溝通的情況之下。 感謝高手的指點了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.23.93.163 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1471584445.A.F40.html
CoNsTaR: 我 google labview c dll 就一堆了…08/19 15:13
CoNsTaR: 如果有問題而且確定是 c/c++ dll 我猜 calling conventio08/19 15:15
CoNsTaR: n 08/19 15:15
不知道是否可能找的到那本書,有講這方面的資訊的,感謝了。 ※ 編輯: hstrxgfcg216 (211.23.93.163), 08/19/2016 16:29:50
TobyH4cker: 網書 08/20 08:24
TobyH4cker: 沒有DLL包DLL這回事吧,只有DLL call DLL08/20 08:30
TobyH4cker: 有點看不懂你的需求,不過我猜你是想要把介面跟邏輯08/20 08:31
TobyH4cker: 分開來這樣? 08/20 08:31
TobyH4cker: 那你就只需要確保介面符合規範,剩下兩個DLL之間的邏08/20 08:33
TobyH4cker: 輯就只是普通的程式設計08/20 08:33
bdvstg: 個人看法... 第一個你要會寫C/C++程式08/20 11:49
bdvstg: 第二個 你要會在你的C/C++程式中呼叫dll08/20 11:50
bdvstg: 最後 你要會把你的C/C++程式包成dll 08/20 11:51
bdvstg: (覺得自己好像在說廢話.......) 08/20 11:54
目前我是會把程式包成dll檔,只是還沒有用dll去call過其他dll,因為我們主管都還沒 有買labview只叫我先查查看別人在labview下呼叫c的dll檔案時,會發生那些問題,所以 我目前是找到wrapper.dll的做法,但是我還在摸索中XD ※ 編輯: hstrxgfcg216 (36.229.5.242), 08/20/2016 12:59:55
CoNsTaR: 問題是 不會有你說的問題發生阿…08/20 14:07
CoNsTaR: 從來沒聽過什麼 dll 資料結構什麼 dll 包 dll wrapper08/20 14:08
CoNsTaR: 的 08/20 14:08
CoNsTaR: 你主管只是不想花錢買軟體之後遇到一堆問題 然後他也只 08/20 14:13
CoNsTaR: 知道你要把 c 和 labview 接起來所以才這樣跟你說吧 實 08/20 14:13
CoNsTaR: 際上你主管重點不是在 labview + dll 會有什麼問題 而是 08/20 14:13
CoNsTaR: 買了 labview 能不能達到想要的效果08/20 14:13
CoNsTaR: 我覺得你現在最好的做法是去弄個試用版 labview 來給他08/20 14:26
CoNsTaR: 玩一玩 確認會不會遇到問題 順便讓你更了解這些東西 才 08/20 14:26
CoNsTaR: 有能力能預期哪邊可能會出問題 08/20 14:26
http://digital.ni.com/public.nsf/allkb/06ECDC689DDA0F3D862574440074CD95 也許這個聯結會讓人比較清楚我的問題XD ※ 編輯: hstrxgfcg216 (223.140.124.59), 08/20/2016 14:51:53
CoNsTaR: https://decibel.ni.com/content/docs/DOC-9079 這裡寫得 08/20 15:22
CoNsTaR: 滿清楚 08/20 15:22
CoNsTaR: 你的函式回傳/接收的參數必須是 Labview 能夠處理的 08/20 15:25
CoNsTaR: 如果你的函式接收/回傳 Labview 不能處理的資料你就得重 08/20 15:27
CoNsTaR: 寫程式/wrapper 包起來 這樣而已 08/20 15:27
只是我沒有寫wrapper程式的經驗,查了一下,好像是新的dll呼叫原dll,不知道是否用 一個dll去引用別的dll,只要單純在前面include原dll就可以了XD ※ 編輯: hstrxgfcg216 (42.73.35.18), 08/20/2016 16:30:37
CoNsTaR: 那要看你有沒有舊 dll 的原始碼 有原始碼就沒有“舊dll08/20 16:38
CoNsTaR: ”這個問題啦 08/20 16:38
CoNsTaR: 沒有原始碼就只是變成新 dll 動態連結舊 dll 這樣 08/20 16:40
感謝啦,我大概有點頭絮了XD ※ 編輯: hstrxgfcg216 (223.136.1.106), 08/20/2016 18:10:35