当前位置: 首页 > news >正文

LabView和DLL中的参数问题

 

注意:在LabView中调用DLL函数时,一定要指定对应的参数类型,而不是选择“Adapt to Type”,否则会出错,不知道为什么书上是要选择“Adapt to Type”。

 

以下做个参考:

转自:https://wenda.so.com/q/1454926221721277?src=170

指针 (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”即可

转载于:https://www.cnblogs.com/zhengfa-af/p/8300983.html

相关文章:

  • Oracle高级复制
  • 浅谈回归(二)——Regression 之历史错误翻译
  • JS判断浏览器类型和屏幕分辨率来调用不同的CSS样式
  • CentOS 6.7 如何启用中文输入法
  • Citrix XenDesktop 引发的学案(四)-与“您的虚拟桌面”之间的连接失败,状态(1030)...
  • 云计算成朝阳产业,未来发展已成趋势
  • js去掉html标签和去掉字符串文本的所有的空格
  • 关于Flurry的数据统计
  • 使用wix制作安装包
  • 使用Windows8开发Metro风格应用七
  • 黑马程序猿——15,String,StringBuffer,基本数据类型包装对象
  • linux libpcap的性能问题,请大家注意绕行。
  • LVS与KEEPALIVED实现高性能高可用负载均衡服务器
  • Vue(二)header组件开发
  • Yii性能调整
  • CSS魔法堂:Absolute Positioning就这个样
  • ECS应用管理最佳实践
  • Java比较器对数组,集合排序
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 测试如何在敏捷团队中工作?
  • 翻译--Thinking in React
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 坑!为什么View.startAnimation不起作用?
  • 批量截取pdf文件
  • 使用agvtool更改app version/build
  • 问题之ssh中Host key verification failed的解决
  • Linux权限管理(week1_day5)--技术流ken
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • $.ajax()
  • (04)odoo视图操作
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (二)springcloud实战之config配置中心
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (七)理解angular中的module和injector,即依赖注入
  • (五)关系数据库标准语言SQL
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .net2005怎么读string形的xml,不是xml文件。
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @test注解_Spring 自定义注解你了解过吗?
  • @拔赤:Web前端开发十日谈
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [Angularjs]ng-select和ng-options
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计