1樓:Scofield Gu
教程來了~過年正好有空自己也正在整理這個問題,因此我就在此分享一下吧。
舉個例子,我們這裡說的就是這個minus 函式,希望得到int* diff_ptr ,是diff的指標。我們通過解指標間接得到diff。但是有時候外部提供的dll是指標,需要我們再LV中自己解引用,那麼以下有三種辦法可以實現。
//code in headfile
struct minus_struct;
DLLIMPORT void Minus(int* a,int* b,struct minus_struct*ret_val);
// code in c
DLLIMPORT void Minus(int* a,int* b,struct minus_struct* ret_val)
可以看到上圖中,我們給a的輸入是50,b是23,那麼diff就是27。上圖中在dereference output中可以看到dest 和getValueByPointer中以及dll的輸出都是我們預期中的27.
這裡要注意的是moveblock func的設定,我一開始也沒設定對,自己寫的dll的指標也指到區域性變數上了...
address接收i32的指標位址,dest為要解析的位址型別,我們設定為int* ,因為裡面存放的int 變數。最後是size寫為4,代表4個位元組。
這個沒啥好說的,就是簡單的VI ,無腦出結果
值得注意的是,其自由度沒有第一種好,但是第一種方法好像不能生成exe.......不知道NI的人咋想的哈哈哈哈,第二種是可以的。
第三種辦法自己寫dll,你可以用c ,py,etc生成dll解析指標!
dll.h is as follows:
#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
#define DLLIMPORT __declspec(dllexport)
#else
#define DLLIMPORT __declspec(dllimport)
#endif
#include
"config.h"
#include
"stdbool.h"
#include
#include
struct
minus_struct
;DLLIMPORT
intHelloWorld
(inta,
intb
);DLLIMPORT
void
Minus
(int*a
,int*b
,struct
minus_struct
*ret_val
);#endif
dll.c is as follows:
/* Replace "dll.h" with the name of your header */
#include
"dll.h"
//DLLIMPORT int HelloWorld(a,b)
//DLLIMPORT
bool
IProperty_GetValue
(int
iproperty
,char
*path
,const
char
*ret_value
)DLLIMPORT
void
Minus
(int*a
,int*b
,struct
minus_struct
*ret_val
)BOOL
WINAPI
DllMain
(HINSTANCE
hinstDLL
,DWORD
fdwReason
,LPVOID
lpvReserved
)case
DLL_PROCESS_DETACH
:case
DLL_THREAD_ATTACH
:case
DLL_THREAD_DETACH:}
/* Return TRUE on success, FALSE on failure */
return
TRUE;}
如果對你有幫助,請給我個小心心,滿足一下我的成就感哈哈哈
如果感興趣,可以追更哦~
動態鏈結庫與靜態鏈結庫有什麼區別?
秀才 動態就是乙個檔案在自己工作的地方,可以重複多次使用的,比如像優秀的導購乙個人可以為6個人同時服務,然而呼叫是複製了N份而不是像CPU或者導購一樣輪詢。靜態就是編譯生成的 不能重複利用 Gavin 靜態庫應該就是和自己的程式編譯在一起的那種庫。動態庫就是不和自己的程式編譯在一起,而是執行的時候才...
西門子PLC與labview之間如何通過OPC進行通訊?
天馬山大軍師 這個問題你解決了嗎?我現在是建立了通過西門子的OPC SCOUT建立起來了連線。然後在labview中呼叫了西門子OPC中建立的變數。可以讀取,在下位機上操作,labview上也可以顯示,但就是沒法通過labview去控制PLC。這個問題困擾了有些天了。硬體條件 s7 300 cp56...
棧幀中的 動態鏈結 作用是什麼?
關於棧幀的動態鏈結與方法解析中的靜態分派與動態分派的的關係,網上的部落格基本都是錯亂的,可以說概念都沒弄清楚。首先要明確沒有靜態鏈結這個東西。然後才是解析,解析只有靜態解析。但是解析又分為類載入的解析與執行期間的解析 再就是分派,區分靜態分派與動態分派。靜態分派對應類載入的解析,動態分派對應執行期間...