怎么运用LabVIEW和DLL传递和承受指针 |
您所在的位置:网站首页 › labview导入dll无头文件 › 怎么运用LabVIEW和DLL传递和承受指针 |
怎么运用LabVIEW和DLL传递和承受指针 2020年9月18日 7:52 阅读(118) 虽然我们都知道要使用CallLibraryFunctionNode去载入DLL,但一遇到指针(Pointer)还真不知道该怎么设定?[Answer]指针(Pointer)是 尽管咱们都知道要运用 Call Library Function Node去载入DLL,但一遇到指针(Pointer)还真不知道该怎样设定? [Answer] 指针 (Pointer)是在C语言中很重要的一种材料型态,并且是被广泛的被运用,所以当要用LabVIEW去呼叫C/C++所开发的DLL时,一定会遇到指针的问题,接着我会以传递及接纳目标这两个方向来阐明。 一、传递指针到 DLL ①传递整数 (Integer)目标 假如以下是咱们呼叫的函式 void ReturningValuesByReference_Integer(int x, int y, int *sum); 咱们要将材料传递到 *sum中,所以请在Data type栏位挑选”Signed 32-bit Integer”,然后在Pass栏位挑选”Pointer to Value. ②传递阵列 (Array)材料 咱们以下列函式为例 int PassingParamters_ArrayOfIntegers (int x[], int length); 咱们要将材料传递到阵列,此刻也要运用目标的办法来传,请你在 Type栏位挑选”Array”,Data type栏位挑选”Singed 32-bit Integer”,Array format栏位挑选”Array Data Pointer”. ③传递字串(String)目标 以下列函式为例 int PassingParamters_String (char *str); 当咱们要将材料传递到 *str中,请你在String format栏位挑选”C String Pointer” ④传递结构(Struct)材料 以下例函式为例 void ReturningValuesByReference_SimpleStruct (struct simpleStructCircle circle, struct simpleStructCircle *largerCircle); 假如是传递结构的话,只需求将本来结构中的内容依序传入即可,以本函式为例 ”circle” 中含有三个浮点数分别是 x, y, radius,所以只需依序宣告即可,但若是遇到结构目标,请你在 Type 栏位挑选 ”Adapt to Type” , Data format 栏位挑选”Handles by Value”,如下图所示。 二、从 DLL接纳目标 ①函式回传目标 假如函式程式码如下 int * ReturnAValue_PointerToInteger(void) { int *x = (int *) malloc(sizeof(int)); *x = 5; return x; } 所以咱们能够知道函式本式回传整数目标,请你在 Type栏位挑选” Numeric”,在Data type栏位挑选”Signed Pointer-sized Integer” ②以Reference型式回传 咱们以下列程式码为例 void ReturningValuesByReference_Integer (int x, int y, int *sum){//sum is a pointer*sum = x + y;} 以上的装备办法是直接运用调用库函数节点来实现时需求做的作业。 假如咱们选用dll调入生成VI的办法则不需求,由于labview现已给装备好了! 如下图:
如下:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |