作者hstrxgfcg216 (sony)
看板C_and_CPP
標題[問題] 關於Labview與C的wrapper.dll問題
時間Fri Aug 19 13:27:22 2016
大家好,
我是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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1471584445.A.F40.html
1F:→ CoNsTaR: 我 google labview c dll 就一堆了…08/19 15:13
2F:→ CoNsTaR: 如果有問題而且確定是 c/c++ dll 我猜 calling conventio08/19 15:15
3F:→ CoNsTaR: n 08/19 15:15
不知道是否可能找的到那本書,有講這方面的資訊的,感謝了。
※ 編輯: hstrxgfcg216 (211.23.93.163), 08/19/2016 16:29:50
4F:→ TobyH4cker: 網書 08/20 08:24
5F:→ TobyH4cker: 沒有DLL包DLL這回事吧,只有DLL call DLL08/20 08:30
6F:→ TobyH4cker: 有點看不懂你的需求,不過我猜你是想要把介面跟邏輯08/20 08:31
7F:→ TobyH4cker: 分開來這樣? 08/20 08:31
8F:→ TobyH4cker: 那你就只需要確保介面符合規範,剩下兩個DLL之間的邏08/20 08:33
9F:→ TobyH4cker: 輯就只是普通的程式設計08/20 08:33
10F:→ bdvstg: 個人看法... 第一個你要會寫C/C++程式08/20 11:49
11F:→ bdvstg: 第二個 你要會在你的C/C++程式中呼叫dll08/20 11:50
12F:→ bdvstg: 最後 你要會把你的C/C++程式包成dll 08/20 11:51
13F:→ 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
14F:→ CoNsTaR: 問題是 不會有你說的問題發生阿…08/20 14:07
15F:→ CoNsTaR: 從來沒聽過什麼 dll 資料結構什麼 dll 包 dll wrapper08/20 14:08
16F:→ CoNsTaR: 的 08/20 14:08
17F:→ CoNsTaR: 你主管只是不想花錢買軟體之後遇到一堆問題 然後他也只 08/20 14:13
18F:→ CoNsTaR: 知道你要把 c 和 labview 接起來所以才這樣跟你說吧 實 08/20 14:13
19F:→ CoNsTaR: 際上你主管重點不是在 labview + dll 會有什麼問題 而是 08/20 14:13
20F:→ CoNsTaR: 買了 labview 能不能達到想要的效果08/20 14:13
21F:推 CoNsTaR: 我覺得你現在最好的做法是去弄個試用版 labview 來給他08/20 14:26
22F:→ CoNsTaR: 玩一玩 確認會不會遇到問題 順便讓你更了解這些東西 才 08/20 14:26
23F:→ 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
25F:→ CoNsTaR: 滿清楚 08/20 15:22
26F:→ CoNsTaR: 你的函式回傳/接收的參數必須是 Labview 能夠處理的 08/20 15:25
27F:→ CoNsTaR: 如果你的函式接收/回傳 Labview 不能處理的資料你就得重 08/20 15:27
28F:→ 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
29F:→ CoNsTaR: 那要看你有沒有舊 dll 的原始碼 有原始碼就沒有“舊dll08/20 16:38
30F:→ CoNsTaR: ”這個問題啦 08/20 16:38
31F:→ CoNsTaR: 沒有原始碼就只是變成新 dll 動態連結舊 dll 這樣 08/20 16:40
感謝啦,我大概有點頭絮了XD
※ 編輯: hstrxgfcg216 (223.136.1.106), 08/20/2016 18:10:35