完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
[Question] 虽然我们都知道要使用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; } 由程序可知,运算后的资料会放在*sum当中,所以请你在Data type栏位中选择”Pointer to Value”即可,如下图所示。 转载 |
|
相关推荐
5 个讨论
|
|
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 07:18 , Processed in 1.127488 second(s), Total 53, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
26414