一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

一、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中的一样,数组格式为数组数据指针,这样可以通过指针输出多个返回值(但是每隔返回值数据类型不同怎么使用不清楚,之后解决了再补)

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

 这样运行就会报错

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

 

posted on   一杯清酒邀明月  阅读(2111)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2020-10-09 Qt comBox按钮怎么获取当前值
2020-10-09 Qt QImage对图片镜像旋转
2020-10-09 Qt QGraphicsView 背景透明设置
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示