cvi调用c编译dll
❶ 如何在labwindows里调用外部dll文件
1,静态调用,必须有.dll .h .lib 三个文件,将3个文件拷贝到工程目录,在你的源文件中include .h文件,在工程项目上 右键 添加 .lib文件,就可以用dll中的函数了,函数原型在.h中。这种方法最普遍,一般都是这样用。
2,动态调用,有.dll 一个文件就可以了,这个麻烦一些,要定义函数指针,用 LoadLibrary("***.dll");用GetProcAddress获取函数指针来调用函数,到网上搜索例子,很多的,几句话说不清楚。
(注意这个DLL必须是标准C编译方式的dll)
❷ CVI怎样调用vc生成的dll
1. 你的硬件设备是本身开辟的么吗假如是简单的不须要中断操作的那完全可以在LabVIEW下操作和控制Port IO中的In Port和Out Port即可实际硬件的操作无外乎读写存放器;假如是须要中断操作的那最好应用VC等开辟对象来编写驱动法度榜样生成Dll文件供
❸ Labwindows CVI 中怎么调用VC++写的库
1.利用VC++生成.dll文件和.lib文件
(1) 创建Win32 Dynamic-Link Library工程。工程名为Dll1。
(2) 在Dll工程添加C++ Source File,文件名为Dll1。
(3) 在Dll1.app文件中写代码如下: extern “C” _declspec(dllexport) int add(int a,int b) { return a+b; } extern “C” _declspec(dllexport) int substract(int a,int b) { return a-b; }
(4) 编译工程,在该工程保存路径下的debug文件夹中生成Dll.lib文件和Dll.dll文件。
2. 在Labwindows/文件中编写代码调用Dll.dll文件中的add函数和substract函数。
图1:界面设计 (1) 创建工程a.project。创建界面如图所示; (2) 产生代码 (3) 创建Dll.h文件,代码如下: DLLIMPORT int add(int a,int b); DLLIMPORT int substract(int a,int b); (4) 在a.c文件头写上 #include “Dll1.h” (5) 将1中生成的Dll1.lib文件和Dll1.dll文件加载到a.project中。 (6) 在计算按钮的回调函数中调用add函数和subtract函数。代码如下: int CVICALLBACK JISUAN (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT:
SetCtrlVal (panelHandle, PANEL_NUMERIC, add(3,5)); SetCtrlVal (panelHandle, PANEL_NUMERIC_2, substract(5,3)); break; } return 0; }
❹ 如何在CVI中调用C#等.NET语言编写的DLL
在CVI中调用C#等.NET语言编写的DLL的步骤:
1.添加引用
右击项目-添加引用-浏览 找到本地的dll文件
2.using 该dll文件里面代码的名称空间
然后就可以调用dll文件里面的类(test)和方法(add)了
例如:
using aa.test
namespace conslole1
{
class Program
{
static void Main(string[] args)
{
Test test1=new Test();
test1.add(1, 2);
}
}
}
❺ VC生成DLL和LIB 在CVI中的调用问题
1. 看看c文件中,是否有那两个函数的声明。
2. 看看工程属性里面有没有在编译的时候设置lib文件。
❻ 带有复杂结构的DLL文件怎样被Labview或CVI调用
1. 你的硬件设备是本身开辟的么吗假如是简单的不须要中断操作的那完全可以在LabVIEW下操作和控制Port IO中的In Port和Out Port即可实际硬件的操作无外乎读写存放器;假如是须要中断操作的那最好应用VC等开辟对象来编写驱动法度榜样生成Dll文件供LabVIEW调用即可因为LabVIEW摒弃了中断和指针两个危险的操作来包督工程师开辟的稳定性。既然编写IVI驱动那么就参照其响应规范特别是VISA标准简单说一个设备的调用过程包含连接和设备和运行和封闭等几个重要构成按照这个流程编写驱动最后写成子VI次序调用履行即可。2. 简单懂得了Agent的传感器输入运算处理履行输出——映射到虚拟仪器的体系中相当于将传感器的旌旗灯号应用数据采集卡采入计算机经LabVIEW或其它软件法度榜样处理后应用数据卡反馈输出数字和模仿旌旗灯号等用这些旌旗灯号再驱动响应的设备来履行特定的动作。抑或应用高低位机的情势经由过程必定的协定实现高低位机的通信上位机发敕令动作的履行就由下位机来履行。还有其它的问题迎接拜访虚拟仪器技巧论坛啊
❼ 如何在LabWIndows/CVI中调用LabVIEW DLL
1。在你的DLL源文件的顶部,包括通过使用# H文件包含预处理指令。
2。调用函数的名字和参数中指定的头文件。
3。添加库文件到您的C / C + +项目。
4.添加.h头文件到project里(注意.h和dll和lib文件的路径不要有中文.中文版labVIEW生成的dll会自动放在中文路径下,请迁移.)
5.找到你安装labVIEW的目录.找到National Instrument/ LabVIEW <你的版本>/ cintools这个文件夹(如果没装LabVIEW可以从别人的机器复制过来,据说可以....没有测试). 将cintools中的extcode.h 和 labview.lib 包含到project里.
6.编译运行.(这样应该可以了吧.)
❽ 在Labwindows/CVI或c语言中如何调用别人写好的dll文件
既然形参已经告诉你要buffer 你就得给他buffer
(ipbuf 显然是 ipaddress buffer 存放ip地址缓存) num设置合适大小
请定义 一个unsigned int 数组
请定义 一个unsigned int * 指针 指向数组
给你写了个 cvi 调用devcpp C语言写的dll 参数类型和你这 类似
(仅仅是简单的选择法对数组排序l)
❾ 用CVI编程,加载了一个DLL文件,编译并生成执行文件A。 运行该A文件,然后退出。出现runtime error 217
数组越界或者指针错误
调试跟踪看看了,如果是dll中错误,那么就看下传递的参数是否有误了
❿ 在LabWindows/CVI程序中如何调用DLL函数,而无需将库文件加入工程文件(project)中
主要软件修正版本: N/A 次要软件: N/A 解答: 如果想在程序执行中调用指定的DLL函数,而不将任何DLL加入工程文件,你需要使用Windows SDK函数“LoadLibrary”和“GetProcAddress”。以下是一段例子代码: // File: RUNTIME.C // Sample code that uses LoadLibrary and GetProcAddress to access myFunction from MYDLL.DLL. // You will need to include stdio.h and windows.h in your project to use this code #include #include typedef VOID (*MYPROC)(LPTSTR); VOID main(VOID){HINSTANCE hinstLib; MYPROC ProcAdd; BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; // Get a handle to the DLL mole. hinstLib = LoadLibrary("mydll"); // If the handle is valid, try to get the function address. if (hinstLib != NULL){ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myFunction"); // If the function address is valid, call the function. if (fRunTimeLinkSuccess = (ProcAdd != NULL)) (ProcAdd) ("message via DLL function\n"); // Free the DLL mole. fFreeResult = FreeLibrary(hinstLib);}// If unable to call the DLL function, use an alternative. if (! fRunTimeLinkSuccess) printf("message via alternative method\n");}注意:在LabWindows/CVI中,所有的SDK函数都是以DLL的形式存在的。LabWindows/CVI与其外部编译器都包含了部分SDK函数的DLL引导库。大部分常用的SDK函数都包含在以下四个引导库中: kernel32.libgdi32.libuser32.libadvapi.libLabWindows/CVI 在启动时会自动加载这四个库,并在链接时进行搜索以解析引用内容。因此,你不必将这些引导库加入工程文件。 如果LabWindows/CVI 链接器报告SDK函数引用失败,你就必须将相关引导库加入工程文件。参考SDK具体函数的帮助,判断是否要将引导库加入工程文件。引导库文件都在cvi\sdk\lib目录下。 更多关于使用Windows SDK函数的信息可以到Microsoft Developer Network(见相关链接)寻找。