LabVIEW传递接收C/C++DLL指针

news2024/11/27 16:46:58

LabVIEW传递接收C/C++DLL指针

传递指针

C和C++函数通常在其函数原型中接收指针。指针基本上是一个表示内存地址的整数值。

要将指向DLL的指针(即值的内存地址)从LabVIEW传递到DLL,必须配置调用库函数节点,以通过引用而不是值传递数据。不能直接传入内存地址,因为LabVIEW不会向编程人员公开数据的内存分配。

将指针传递给整数(和其他基元)

以下是采用指向整数的指针的函数的调用库函数节点配置。“传递”下拉列表应更改为“指向值的指针”。

voidReturningValuesByReference_Integer(intx,inty,int*sum);

传递数组

根据定义,数组是C/C++中的指针。这意味着数组变量实际上只保存数组第一个元素的内存地址。

以下是采用整数数组的函数的调用库函数节点配置。“类型”应设置为“数组”。为数组选择适当的数据类型(在本例中为整数),并保留默认的“数组格式”下拉值“数组数据指针”。

intPassingParamters_ArrayOfIntegers(intx[],intlength);

将指针传递给字符串

字符串是一种特殊情况,因为字符串实际上只是一个char类型的数组。因此,默认情况下,它们已经通过引用传递。

以下是采用字符串输入的函数的调用库函数节点配置。将字符串格式保留为其默认值-C字符串指针。

intPassingParamters_String(char*str);

将结构和指针传递给结构

以下是采用结构和指向结构的指针的函数的调用库函数节点配置。若要传递结构,只需按顺序传入组成元素,若要传递指向结构的指针,可以将表示结构的群集作为“适应类型”输入传递,其数据格式设置为“按值处理”。

voidReturningValuesByReference_SimpleStruct(structsimpleStructCirclecircle,structsimpleStructCircle*largerCircle);

接收指针

C/C++DLL通常会使用指向所请求值的内存位置的指针返回数据。这是通过以下两种方式之一完成的:

1.返回指针:指针作为函数的“返回值”返回,如下例所示。

int*ReturnAValue_PointerToInteger(void)

{

int*x=(int*)malloc(sizeof(int));

*x=5;

returnx;

}

由于调用库函数节点仅允许返回整数、字符串和void类型的返回类型,因此必须接受指针作为表示内存地址的整数,并手动取消引用指针以获取其值。

2.按引用传递:指针通过函数的参数返回

voidReturningValuesByReference_Integer(intx,inty,int*sum)

{

//sumisapointer

*sum=x+y;

}

根据返回的数据类型,可以自动取消引用指针(如数字和简单结构),也可以接受指针作为表示指针的整数值,然后手动取消引用指针以获取其值。

请参阅接收指针作为内存地址和手动取消引用和接收指针和自动取消引用一节

接收指针并自动取消引用

调用库函数节点将允许自动取消对LabVIEW中一些常见数据类型的指针的引用,例如数字和简单结构结构。执行此操作的过程与将指针传递给DLL完全相同,并将参数视为输出而不是输入。

接收指针作为内存地址并手动取消引用

要接收指针,必须将调用库函数节点配置为接受整数值。此整数值是内存地址。获得内存地址后,必须取消引用该地址以获取实际值。

若要将调用库函数节点配置为接收指针,请将“类型”设置为“数字”,将数据类型设置为“有符号指针大小的整数”。指针大小的整数将根据操作系统和LabVIEW在调用库函数节点上自动使用适当的指针大小(32位与64位)。

注意:如果将32位整数传递给此输入,即使使用的是32位操作系统,也会看到一个强制点。

需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】vim文本编辑器的使用

目录 一、为什么要学vim 1.原因 2.简单介绍 3.准备工作 二、vim最小集 1.各模式功能 2.编写代码示例 三、vim指令集 1.命令模式 1.1光标移动 1.2复制(剪切)粘贴 1.3 撤销 1.4 替换 / 删除/大小写切换 2.底行模式 2.1本文件内操作 2.2文件…

KITTI数据集可视化(二):点云多种视图与标注展示的可视化代码解析

如有错误,恳请指出。 文章目录1. 在图像上绘制2d、3d标注框2. 在图像上绘制Lidar投影3. Lidar绘制前视图(FOV)4. Lidar绘制前视图(FOV)3d box5. Lidar绘制鸟瞰图(BEV)6. Lidar绘制鸟瞰图(BEV)2d box7. Lidar绘制全景图(RV)8. Lidar绘制全景图(RV)2d box在对KITTI数据…

立创eda专业版学习笔记(2)(从原理图导入变更失败)

出师不利啊,刚想把用一个原理图生成pcb板就出来这个,第一眼我是有点懵的。后来发现其实是我没搞清楚软件的基本逻辑。 原本,在一个板子的下面有一个原理图,原理图有1页,图标是这个样子 我本来是想新建一个pcb板&#x…

Spring MVC 返回数据

默认请求下⽆论是 Spring MVC 或者是 Spring Boot 返回的是视图(xxx.html),⽽现在都是前后端分离的,后端只需要返回给前端数据即可,这个时候我们就需要使⽤ResponseBody 注解了。 1.返回静态界面 创建前端页面index.…

spring boot配置多数据源(静态和动态数据源)

背景在开发过程中,很多时候都会有垮数据库操作数据的情况,需要同时配置多套数据源,即多个数据库,保证不同的业务在不同的数据库执行操作,通过mapper来灵活的切换数据源。本文以sqlserver和mysql混合数据源配置为例。配…

美团开放平台SDK自动生成技术与实践

总第549篇2023年 第001篇美团开放平台为整个美团提供了20业务场景的开放API,为了使开发者能够快速且安全的接入美团开放平台,美团开放平台提供了多种语言的SDK来提高开发者的接入效率。本文介绍了美团开放平台如何自动生成SDK代码的相关技术实现方案&…

【学习】深度强化学习、模型压缩

文章目录一、deep reinforcement learningPolicy-based Approach——Learning an Actor作为actor的神经网络small model网络可以被修剪一、deep reinforcement learning 强化学习场景 监督学习和强化学习之间: 训练一个聊天机器人-强化学习:让两个代…

基于c语言tftp服务器与客户端实现

开发环境:ubuntu 所用知识点:c,socket, tcp/ip协议 A)本实验主要实现tftp协议的服务器与客户端。 服务器实现功能有: 1)接收处理客户端请求,上传下下载文件 2)进行用户验证 3)对传输数据进行加密解密处理 4)生成日志文…

TensorRT学习笔记--Ubuntu20.04安装TensorRT 8.2.5

目录 前言 1--查看本机环境配置 2--下载并安装Tensor RT 3--实例测试 3-1--验证Onnx模型的可用性 3-2--将Onnx模型转换为推理引擎engine 3-3--基于Tensor RT使用engine模型进行推理 4--参考 前言 推荐结合官方文档 3.2.3节中的Tar File Installation安装教程进行安装&a…

【docker09】镜像发布到docker私有库

镜像发布到docker私有库 1.Docker Registry 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢,并且具有被阿里云取代的趋势,不太主流Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像…

PDF如何转换成excel文档?这个方法很实用

PDF如何转换成excel文档?PDF文件是我们经常使用的文件之一,我们在很多工作场景都能接触到PDF文件,不过PDF文件并不能适用于各种情况,比如我们想对文件内的数据进行更改,我们就需要把PDF文件转换成excel表格再进行修改&…

js 生成条形码

简介&#xff1a; 通过js生成条形码 效果展示&#xff1a; 示例代码&#xff1a; <!-- Created by IntelliJ IDEA. User: songsir Date: 2018/11/26 Time: 10:49 --> <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&…

分享一下我3个月收割大厂offer的一些经验总结

前几天&#xff0c;有位老粉私信我&#xff0c;说看到某95后学弟晒出阿里P7的工资单&#xff0c;他是真酸了…想狠补下技术&#xff0c;努力冲一把大厂。 为了帮到他&#xff0c;也为了大家能在最短的时间内做面试复习&#xff0c;我把软件测试面试系列都汇总在这一篇文章了。…

对抗搜索 学习笔记

先来看一道有意思题 situation 大意&#xff1a; 两个人玩井字棋&#xff0c;要求把所有位置填满后结束游戏。一方希望两者的连起来的线之差最多&#xff0c;一方希望最少。现在给定初始局面&#xff08;已经存在一些棋子&#xff09;以及先手&#xff0c;求最后的两者的连起…

SAP FICO预制凭证界面隐藏过账按钮

会计凭证一旦过账了就不能再进行修改&#xff0c;但其也提供了类似国内财务软件同样的预制功能&#xff0c;预制凭证过账之前不会更新会计系统。预制凭证虽然不更新科目余额&#xff0c;但同样会生成凭证编号&#xff0c;其凭证内容可以随意更改&#xff0c;也可以删除。一旦过…

bios设置u盘启动重装系统教程

​如今&#xff0c;大部分人都会采用U盘启动盘装系统&#xff0c;而使用U盘装系统之前&#xff0c;有一个很重要的步骤&#xff0c;那就是设置U盘启动。大部分电脑都可以直接通过u盘启动快捷键来选择U盘启动&#xff0c;少部分电脑只能通过bios设置u盘为第一启动项。那么&#…

支付宝的架构

自 2008 年双 11 以来&#xff0c;在每年双 11 超大规模流量的冲击上&#xff0c;蚂蚁金服都会不断突破现有技术的极限。2010 年双 11 的支付峰值为 2 万笔/分钟&#xff0c;到 2017 年双 11 时这个数字变为了 25.6 万笔/秒。 2018 年双 11 的支付峰值为 48 万笔/秒&#xff0c…

log4j2的使用

Log4j2的使用 概述 Apache Log4j 2是对Log4j的升级版&#xff0c;参考了logback的一些优秀的设计&#xff0c;并且修复了一些问题&#xff0c;因此带来了一些重大的提升&#xff0c;主要有&#xff1a; 异常处理&#xff0c;在logback中&#xff0c;Appender中的异常不会被应…

若依 ruoyi 配置多数据源 生成代码 导出代码

本文相关库说明&#xff1a;vue&#xff08;若依自带库&#xff09;db_game多数据源从库1db_paystore 多数据源从库2多数据源的情况下&#xff0c;想生成其他从库下数据库表对应的代码&#xff0c;但是若依自带的导入表中 是不会查询到从库各数据表信息的(只查询到若依框架对应…

我是这样解决 HBuilderX 安卓基座安装失败的问题

本文简介 点赞 关注 收藏 学会了 记录一个在使用 HBuilderX 开发 App 时遇到的问题。 同步资源失败&#xff0c;未得到同步资源的授权&#xff0c;请停止运行后重新运行&#xff0c;并注意手机上的授权提示 出现这个问题的原因是我把手机的 HBuilder App 给删掉了&#xff…