• 【LabVIEW】调用库函数传入参数、返回值数据类型配置


    一、调用库函数节点


    这个知识点按照这一篇教程学习比较好:
    https://blog.csdn.net/where187/article/details/82388624

    几个需要注意的点:

    1、调用:

    互连接口——库与可执行程序——调用库函数节点


    2、在编写动态库函数时,要在同名头文件里函数声明处加上extern "C",如:

    extern "C" _declspec(dllexport) void ArrayFloorId(double *input, int inputLength, int *output);

    否则在画程序图调用库函数进行配置的时候,函数名会加载错误(出现问号、@等其他字符)。

    3、先获取数组大小再进行数组初始化,否则连线错误。

    4、配置

    线程设置可以任意,调用规范必须设置为C。

    函数各参数的数据类型一定要配置正确,否则程序会出错。

    5、技巧

    是在对应的参数端口那里,右键,新建常量或者输入控件,然后再在新建出来的常量或者输入控件上面修改。因为新建出来的数据类型肯定是对的。

    二、传入参数、返回值数据类型配置

    1、传参为指针

    void test(int x, int y, int *sum); //函数接受一个指向整数的指针

    2、传参为数组

    int test(int x, int y, int sum[], int length); //函数接受一个整数数组

     

    3、传参为char类型
    int test(int x, int y, char *sum); //函数接受字符串

    4、传递结构体和指向结构体的指针

    void test(int x, int y, char *sum,struct simpleStructCircle *largerCircle);  //任意结构体

    5、返回指针
    两种方式:

    (1)作为返回值

    int * test(void)
    {
         int *x = (int *) malloc(sizeof(int));
         *x = 5;
         return x;
    }
    因为LabVIEW调用库函数节点只允许返回整数、字符串和Void类型,所以必须将指针作为表示内存地址的整数接受,并手动解引用指针以获得其值。

    (2)Reference 指针通过函数的形参返回
    void test(int x, int y, int *sum)
    {
         //sum is a pointer
         *sum = x + y;
    }

    同理,返回float类型数据:

    void test(float& Vesionnum)
    {
       Vesionnum = 1.32;
    }

    6、关于返回值为BOOL的情况

    要知道的是,在C里面没有定义布尔是基础类型,在C++里面才有专门的布尔类型bool(字长跟BYTE相同)。
    C++里面虽然有,但在实际开发中,发现大部分老的程序里在编写动态库的时候还是习惯自己定义BOOL。

    #define FALSE   0
    #define TRUE    1


    typedef long BOOL;//或者typedef int BOOL;

    返回时:
    return FALSE;

    在这种情况下,调用库函数节点返回类型就按照 typedef 后的类型来选择(long或int等)。

    来源:https://forums.ni.com/t5/Developer-Center-Resources/Passing-and-Receiving-Pointers-with-C-C-DLLs-from-LabVIEW/ta-p/3522714?profile.language=zh-CN

    其他可供参考:

    https://blog.csdn.net/mysolisoft/article/details/111056587

    /*******相与枕藉乎舟中,不知东方之既白*******/
  • 相关阅读:
    表达式目录树(Expression)
    六大设计原则【单一职责】【里氏替换】【 迪米特法则】【依赖倒置原则】【接口隔离原则】【开闭原则】
    lambda,linq
    c#中的特性Attribute
    CentOS7部署Nginx
    NetCore项目的部署
    ABP+NetCore+Vue.js实现增删改查
    Abp数据库迁移注意事项
    MVC分页
    AspNet5 Changes to [Activate] in beta-5
  • 原文地址:https://www.cnblogs.com/Mars-0603/p/14990391.html
Copyright © 2020-2023  润新知