• LabVIEW 调用库函数节点


    一、dll文件的创建

    dll文件的创建,我使用的是VS 2017,以此为例介绍:

    1、新建一个dll项目,选择Visual c++》Windows 桌面》动态链接库(DLL)

     然后会得到如下图所示的Dll.cpp文件

     会得到一个空的头文件文件

     其中#pragma once 代表这个头文件只被编译一次,与

    1 #ifndef _DELL1_H
    2 #define _DELL1_H
    3 
    4 
    5 
    6 #endif

    作用类似。

    2、编写程序
    在头文件写声明,值得注意的是,这里需要使用__declspec(dllexport)关键字修饰,表示这个函数是输出的函数可以在外部使用,这里的 extern “C” 表示的是用c的编译器来编译这个函数,这里的C是大写的要注意,这样编译出来的函数名就是我们希望的,否则就会产生不一样函数名。

    extern "C" __declspec(dllexport) UINT8 choose(double *a, UINT8 *b);

    去源文件Dll1.cpp定义函数体,别忘记在开头把Dll1.h头文件包括进来。

     1 #include "stdafx.h"
     2 #include "Dll1.h"
     3 
     4 double abs(double a)
     5 {
     6     return a > 0 ? a : -a;
     7 }
     8 
     9 
    10 extern "C" __declspec(dllexport) UINT8 choose( double *a,UINT8 *b)
    11 {
    12     double T = *a;
    13     double To = *(a + 1);
    14     double Tb = *(a + 2);
    15     double Tt = *(a + 2);
    16     if (Tb < T | Tt < T)
    17     {
    18         if (abs(Tb - Tt) < 3)
    19         {
    20             *b = 1;
    21             *(b + 1) = 1;
    22         }
    23         else
    24         {
    25             *b = 0;
    26             *(b + 1) = 0;
    27 
    28         }
    29     }
    30     else
    31     {
    32         *b = 0;
    33         *(b + 1) = 0;
    34 
    35     }
    36 
    37     return 1;
    38 }

    生成dll,在“生成”》生成解决方案,如果没报错的话就能生成dll文件,实际生成的时候,如果之前这个dll文件已经zailabview使用了,那么生成的时候可能会报错(即使是复制出去的dll)关闭labview重新尝试。

     

    之后会在羡慕文件夹的“同级目录”下的Debug文件夹出现编译好的dll文件和lib文件,不是项目文件夹下的那个。

    3、在LabVIEW中使用dll

    在labview中使用dll很简单只需要后面板上右键》互连接口》库与可执行…》调用函数库…

     然后配置“调用库函数节点”,选择好路径和选用的函数(我这里是之前配置的,用的是Dell2.dll库)

    再去参数里增加返回值和输入参数,值得注意的是,这里的数据类型必须要匹配dll库里的数据类型不然会出现各种各样的问题,另外如果传入的是一个数组的函数名(即数组首地址)那么这里需要选用的类型是数组,数组的类型按照你的要求选择但是必须和dll中的一样,数组格式为数组数据指针,这样可以通过指针输出多个返回值(但是每隔返回值数据类型不同怎么使用不清楚,之后解决了再补)

     然后接好输入输出的线就可以使用了,如果你的函数或者输入输出类型有问题就会报错,检查输入输出的数据类型后再尝试,另外如果没有给数组赋初值也会出错。

     这样运行就会报错

    但是赋初值之后就不会报错而是正常运行

     

  • 相关阅读:
    centos7 实时查看tomcat错误信息
    soapUI测试webservice(参数为xml格式的处理方式)
    四个好看的CSS样式表格
    ORM篇——有关NHibernate查询封装
    ORM篇——使用NHibernate配置对象实体的一些小问题
    c#操作XML文件的通用方法
    C#中正则表达式的使用
    C# Dictionary用法总结
    DLinq查询
    DataGrid通过DataSet保存为xml文件,并导入
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/15383910.html
Copyright © 2020-2023  润新知