LabVIEW中使用.NET方法时出现错误1316

news2024/11/27 14:28:35

LabVIEW中使用.NET方法时出现错误1316

为什么不能调用带有泛型参数的方法?

LabVIEW不支持哪些.NET功能?

为什么会收到以下错误:

发生此错误的原因是正在调用LabVIEW中不支持的.NET功能。有关解决方法,请参阅“其他信息”部分。可以在下面找到LabVIEW中不支持的.NET功能列表。

.NET2.0及更高版本

泛型—LabVIEW不提供实例化泛型类或调用泛型方法的机制。.NET构造函数节点和.NET调用节点不允许指定要替换泛型类型的类型。

异常:

LabVIEW可以实例化对象并调用在.NET程序集中定义的方法,这些程序集还包含泛型类型定义或泛型方法定义。但是,LabVIEW只能访问这些装配件中不使用通用功能的部分。

LabVIEW可以在内部实例使用泛型类或方法的.NET对象。

LabVIEW可以在内部调用使用泛型类或方法的.NET方法。

.NET4.0

进程内并行执行(仅适用于LabVIEW 2013之前的LabVIEW版本。单击此处查看如何在LabVIEW 2013及更高版本的LabVIEW中加载混合模式装配程序)—LabVIEW不能对以不同版本的CLR运行为的.NET程序集使用不同版本的.NET公共语言运行库(CLR)。相反,LabVIEW只对它在单个应用程序实例中加载的所有.NET程序集使用一个版本的CLR。LabVIEW使用以下规则来确定使用哪个已安装的CLR版本:

默认情况下,LabVIEW使用CLR2.0,它随.NET2.0、3.0和3.5一起安装。

如果创建了相应的应用程序配置文件,LabVIEW将使用CLR4.0。

要更改CLR LabVIEW使用的哪个版本,必须退出LabVIEW并添加或移除应用程序配置文件。有关更多信息,请参阅LabVIEW帮助(链接如下)中的在LabVIEW中加载.NET4.0装配主题。

动态关键字-.NET4.0引入了关键字,该关键字指定在运行时之前不会确定或强制实施关联数据类型。但是,LabVIEW要求.NET对象具有定义的类型,以便在.NETI nvoke Node中显示可用的方法。因此,尽管LabVIEW允许调用返回动态数据类型的.NET方法,但不能使用返回的数据来调用其他方法。

异常:LabVIEW可以成功调用内部使用动态数据类型的装配程序。

可选参数的默认值-.NET程序集可能包含允许可选参数的方法。反过来,可选参数具有默认值,如果调用方未为参数指定值,则方法将使用这些值。但是,当从LabVIEW调用具有可选参数的方法时,LabVIEW始终会为参数传递其自己的缺省值,而不是让方法使用其自己预配置的缺省值。

最后,NI不保证LabVIEW完全支持所有.NET4.0类库。在可能的下,NI建议在使用LabVIEW2之前的LabVIEW版本时,使用针对CLR0.4的装配程序,而不是CLR0.2013。

通常,如果要使用LabVIEW不支持的.NET功能,可以创建一个包装的.NET程序集,用于在内部访问不支持的功能。由于自己创建包装器程序集,所以可以将公开的类型和方法定义限制为LabVIEW支持的类型和方法定义。

英文版如下所示:

Solution

Thiserror occurs because you are calling a .NET feature that is unsupported inLabVIEW. Refer to the "Additional Information" section for aworkaround. You can find a list of .NET features that are unsupported inLabVIEW below.

.NET2.0 and later

Generics—LabVIEWdoes not provide a mechanism to instantiate generic classes or to call genericmethods. The .NET Constructor Node and the .NET Invoke Node do not allow you tospecify which types you want to substitute for the generic types.

Exceptions:

LabVIEWcan instantiate objects and call methods that are defined in .NET assembliesthat also contain generic type definitions or generic method definitions.However, LabVIEW can access only the parts of these assemblies that do not usegeneric features.

LabVIEWcan instantiate .NET objects that use generic classes or methods internally.

LabVIEWcan call .NET methods that use generic classes or methods internally.

.NET4.0

In-processside-by-side execution (only applies to LabVIEW versions prior to LabVIEW 2013.Click here to see how to load mixed-mode assemblies in LabVIEW 2013 and laterversions of LabVIEW)—LabVIEW cannot use a different version of the .NET CommonLanguage Runtime (CLR) for .NET assemblies targeted to run in differentversions of the CLR. Instead, LabVIEW uses only one version of the CLR for allthe .NET assemblies that it loads in a single application instance. LabVIEWuses the following rules to determine which installed version of the CLR touse:

Bydefault, LabVIEW uses the CLR 2.0, which is installed with .NET 2.0, 3.0, and3.5.

If youcreate the appropriate application configuration file, LabVIEW uses the CLR4.0.

Tochange which version of the CLR LabVIEW uses, you must exit LabVIEW and add orremove the application configuration file. Refer to the Loading .NET 4.0Assemblies in LabVIEW topic in the LabVIEW Help (linked below) for moreinformation.

If youdo not know which version of the CLR a specific assembly is targeted to use,you can refer to the .NET Assemblies in Memory dialog box. Refer to the .NETAssemblies in Memory Dialog Boxtopic in the LabVIEW Help (linked below) formore information.

dynamickeyword—.NET 4.0 introduces the dynamic keyword, which specifies that the typeof associated data is not determined or enforced until run time. LabVIEW,however, requires .NET objects to have a defined type in order to display theavailable methods in the .NET Invoke Node. Therefore, although LabVIEW allowsyou to call .NET methods that return a dynamic data type, you cannot use thereturned data to call other methods.

Exception:LabVIEW can successfully call assemblies that use dynamic data typesinternally.

Defaultvalues for optional parameters—.NET assemblies may include methods that allowoptional parameters. Optional parameters, in turn, have default values that themethod uses if the caller does not specify a value for the parameter. However,when you call a method with an optional parameter from LabVIEW, LabVIEW alwayspasses its own default value for the parameter instead of letting the methoduse its own preconfigured defaults.

Finally,National Instruments does not guarantee that LabVIEW fully supports all .NET4.0 class libraries. When possible, National Instruments recommends that youuse assemblies targeted for the CLR 2.0 instead of the CLR 4.0 when workingwith LabVIEW versions prior LabVIEW 2013.

AdditionalInformation

Workaround

Ingeneral, if you want to use a .NET feature that LabVIEW does not support, youcan create a wrapper .NET assembly that accesses the unsupported featureinternally. Because you create the wrapper assembly yourself, you can limit theexposed types and method definitions to those supported by LabVIEW.

什么是DLL封装,我什么时候需要使用DLL封装?

解决方案

所谓封装就是指为另一种软件提供兼容性接口的程序。由于第三方DLL的开发设计通常是为了从C语言(或者其它类似的底层语言)中调用,而不从是LabVIEW中调用,因此当使用LabVIEW进行应用程序开发时,往往会用到封装。例如,有的DLL会返回指针或者其它复杂的数据结构,而这在LabVIEW中却无法很容易的实现。

编写一个DLL封装,可以类比在C语言环境下,按照该DLL原始开发者设计的调用DLL方式,来编写一个完全独立的程序。反过来,这个封装程序也是专门针对在LabVIEW中调用DLL所设计的。也就是说,这个新的用C编写的“封装” 程序将原来的C程序(DLL)封装起来,形成一个接口层。使用封装的好处在于,不再需要使用原来的DLL的源代码,也不需要对这些源代码进行任何改动。

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

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

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

相关文章

04- Matplotlib数据可视化详解 (数据库)

Matplotlib的亮点: import matplotlib.pyplot as plt # 导包plt.figure(figsize (9, 6) , 设置图片大小plt. plot(x, y), 画图绘制网格线: 线型, 颜色, 透明度plt.grid(linestyle --, color green, alpha0.75) # linestyle: 样式, color: 颜色, alpha: 透明度plt.axis(…

【堆】数据结构堆的实现(万字详解)

前言: 在上一期中我们讲到了树以及二叉树的基本的概念,有了之前的认识,今天我们将来具体实现一种二叉树的存储结构“堆”!!! 目录1.二叉树顺序结构介绍2.堆的概念及结构3.调整算法3.1向上调整算法3.1.1算法…

消息中间件-RocketMQ入门 消息发送的三种方式

消息中间件-RocketMQ入门 消息发送的三种方式消息中间件简介应用场景常用消息中间件RocketMQ核心概念入门案例-生产者和消费者代码逻辑消息发送的三种方式同步发送异步发送一次性消息消息中间件简介 应用场景 假设现在有订单微服务和积分微服务,正常请求流程之后是不是一个订…

Java程序员:为了跳槽刷完1000道真题,想不到老板直接给我升职了

同事:前阵子听说你要跳槽,现在准备得怎么样啊? 程序员T:不跳了 同事:啊?为什么? 程序员T:涨薪了呗? 同事:真的吗?涨了多少?你自己…

DAMA数据管理知识体系指南之文档和内容管理

第10章 文档和内容管理 10.1 简介 文档和内容管理是对存储在关系数据库以外的信息的采集、存储、访问以及使用的控制活动。文档和内容管理的侧重点在完整性和访问控制上。因此,它与关系数据库的数据操作管理大致相同。由于多数非结构化数据与存储在结构化文件中的…

数据存储技术复习(四)未完

1.什么是NAS。一般用途服务器与NAS设备之间有何不同。NAS是一个基于IP的专用高性能文件共享和存储设备。—般用途服务器可用于托管任何应用程序,因为它运行的是一般用途操作系统NAS设备专用于文件服务。它具有专门的操作系统,专用于通过使用行业标准协议…

151、【动态规划】leetcode ——2. 01背包问题:二维数组+一维数组(C++版本)

题目描述 原题链接:2. 01背包问题 解题思路 (1)二维dp数组 动态规划五步曲: (1)dp[i][j]的含义: 容量为j时,从物品1-物品i中取物品,可达到的最大价值 (2…

算法顶级比赛汇总

可参赛的算法比赛 阿里云天池大数据竞赛 时间:每年各个季度很多类型都会出题(比赛总时间大概为两个月) 内容:各个类型的算法题都会出、奖金上万不等 形式:在线提交(提交后在线检查结果)、离线…

简洁易懂:源码+实战讲解Redisson并发锁及看门狗自动续期

1 缘起 有一次同事问Redisson存储的键是否为hash? 我当时,没有看Redisson的相关源码,只知道应用, 所以没有办法回答,于是开始看看Redisson实现的源码, 顺便写了一个单机Redisson测试, 发现Redi…

leaflet 加载CSV数据,显示图形(代码示例046)

第046个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载CSV文件,将图形显示在地图上。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示例效果配置方式示例源代码(共74…

海思3559:BT656调试笔记

前言 海思3559a的sdk例子是没有提供BT1120和BT656视频接入的,但实际上硬件是可以支持接入的。不过前提是只支持逐行方式输入,不支持隔行视频,如果想输入PAL制式的隔行视频,请先用芯片转成逐行再接入。不知道是官方手册有意无意的忽…

弄懂自定义 Hooks 不难,改变开发认知有点不习惯

前言 我之前总结逻辑重用的时候,就一直在思考一个问题。 对于逻辑复用,render props 和 高阶组件都可以实现,同样官方说 Hooks 也可以实现,且还是在不增加额外的组件的情况下。 但是我在项目代码中,没有找到自定义 …

python | 第二章考试题和练习题

一、考试题 1、turtle八边形绘制 问题描述: 使用turtle库,绘制一个八边形。 参考代码: import turtle as t t.pensize(2) for i in range(8):t.fd(100)t.left(45) 2、turtle八角图形绘制 问题描述: 使用turtle库,…

SaleSmartly(ss客服)带你了解:缩短B2B销售周期的秘诀

缩短B2B销售周期的秘诀:即时聊天 关键词:B2B 销售;即时沟通;SaleSmartly(ss客服) 在B2B销售中,时间就是一切。在某些情况下,买家正在积极寻找即时解决方案,潜在客户以多种…

【2023unity游戏制作-mango的冒险】-开始画面API制作

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏:游戏制作 ⭐mango的冒险-开始画面制作⭐ 文章目录⭐mango的冒险-开始画面制作⭐👨‍&…

EasyCVR视频云存储的架构解析与Sharelist云存挂载方法介绍

一、什么是视频云存储? 视频云存储主要用于为上层应用提供视频文件、结构化信息、事件信息的相关服务。云存储节点分为数据文件存储节点和结构化数据存储节点。数据文件存储节点主要用于视频、图片的存储。结构化数据存储节点用于存储结构化数据并提供相关服务。 …

【学习记录】PCA主成分分析 SVD奇异值分解

在看MSC-VO代码的过程中,大量出现了奇异值分解的内容,本身对这部分了解不多,这里补一下课,参考b站up主小旭学长的视频,链接为:PCA主成分分析和SVD主成分分析 PCA主成分分析 PCA根本目的在于让数据在损失尽…

机器学习笔记之生成模型综述(三)生成模型的表示、推断、学习任务

机器学习笔记之生成模型综述——表示、推断、学习任务引言生成模型的表示任务从形状的角度观察生成模型的表示任务从概率分布的角度观察生成模型的表示任务生成模型的推断任务生成模型的学习任务引言 上一节介绍了从监督学习、无监督学习任务的角度介绍了经典模型。本节将从表…

概率论面试题1:玫瑰花

概率论面试题 1. 一个活动,n个女生手里拿着长短不一的玫瑰花,无序的排成一排,一个男生从头走到尾,试图拿更长的玫瑰花,一旦拿了一朵就不能再拿其他的,错过了就不能回头,问最好的策略&#xff1…

3年自动化测试这水平?我还不如去招应届生

公司前段缺人,也面了不少测试,结果竟然没有一个合适的。一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望。看简历很多都是3年工作经验,但面试…