qt调用仪器驱动库dll实现程控
在《使用qt+visa实现程控》中实现了qt调用visa库的简单Demo
本文将尝试使用qt调用仪器驱动库来实现对仪器仪表的程控
开发环境
- 系统: windows 10
- 环境: qt 5.80
- 库: visa 16.0 + ivi 16.0
配置过程
驱动库为动态库,主要包含.h
,.lib
,.dll
,则按照调用动态库方式进行尝试
1. 添加依赖项
在.pro
文件中添加以下代码
win32 {
INCLUDEPATH += "C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Include"
INCLUDEPATH += "C:\Program Files (x86)\IVI Foundation\IVI\Include"
LIBS += "C:\Program Files (x86)\IVI Foundation\VISA\WinNT\lib\msc\visa32.lib"
LIBS += "C:\Program Files (x86)\IVI Foundation\IVI\Lib\msc\ivi.lib"
LIBS += "E:\WorkSpace\qtVisa\Demo\qt_dll_Demo\AVSA\AVSA.lib"
}
2. 尝试调用库函数
#include <QCoreApplication>
#include "AVSA/AVSA.h"
#include <visa.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
ViSession AVSA_Handler;
ViByte rdBuff[100];
int retCount = 0;
ViStatus status;
status = AVSA_init("TCPIP0::127.0.0.1::5000::SOCKET", VI_FALSE, VI_FALSE, &AVSA_Handler);
ViSession viAVSA_Handler = Ivi_IOSession(AVSA_Handler);
retCount = viQueryf( viAVSA_Handler, "*IDN?\n", "%s", rdBuff);
AVSA_close( AVSA_Handler);
return a.exec();
}
注意
由于驱动库使用ivi实现,所以在使用visa库中的viQueryf 时需要对句柄
ViSession
进行转换ViSession viAVSA_Handler = Ivi_IOSession(AVSA_Handler);
在调用代码时出现错误,During startup program exited with code 0xc0000135,需要将动态库
dll
文件放到可执行文件目录下才可以
参考
qt调用仪器驱动库dll实现程控的更多相关文章
- QT的MYSQL驱动库编译
QT的MYSQL驱动库编译 需要准备QT的源码Src,此次编译64位 在QTCreator中打开mysql.pro 修改两个pro 文件,下图为改好 1.mysql.pro TARGET = qsql ...
- QT调用C#写的Dll
参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数的,是一种中间语言,需要 ...
- QT 调用VS2015编写的Dll
最近在用QT调用VC生成的库,QT使用的是MinGW调试器,出现与动态库不兼容的问题,最后发现QT只能识别VC生成的C格式下的动态库 也就是在导入导出设置时加入extern "C" ...
- 在VS2015中用C++编写可被其它语言调用的动态库DLL
转自:http://blog.csdn.net/songyi160/article/details/50754705 VS2015用C++创建动态库DLL步骤如下: (1)启动VS2015>文件 ...
- Qt调用VS生成的dll
预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windo ...
- Qt生成和调用动态库dll,和静态库.a(windows和linux通用)
系统1:ThinkPad T570.Windows10.QT5.12.2(Qt Creater 4.8.2)一.动态库.dll的创建和调用1.在qtcreater中按如下步骤创建动态库,动态库名为my ...
- 6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作
一 QT的内存管理 1 QT中的内存管理是QObject来管理的 2 QT中的内存管理没有cocos2dx中的引用计数 3 组件能够指定父对象 QTimer *timer = QTime ...
- Window下 Qt 编译MySQL驱动(居然用到了动态库格式转换工具)
一步步在Window下开发Qt 今天开始安装MySQL,看了些关于MySQL安装的博文,方法大致相同,但是遇到的细节问题各有不同,或者没有讲全面,下面来说说个人的安装过程及遇到的问题. 1.首先下载, ...
- Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)
下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this ...
随机推荐
- 玲珑杯”ACM比赛 Round #19 B 维护单调栈
1149 - Buildings Time Limit:2s Memory Limit:128MByte Submissions:588Solved:151 DESCRIPTION There are ...
- Codeforces 931.F Teodor is not a liar!
F. Teodor is not a liar! time limit per test 1 second memory limit per test 256 megabytes input stan ...
- Codeforces 938.D Buy a Ticket
D. Buy a Ticket time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- Qt ------ 主事件循环与 QEventLoop
1.事件循环一般用exec()函数开启.QApplicaion::exec().QMessageBox::exec()都是事件循环.其中前者又被称为主事件循环. 事件循环首先是一个无限“循环”,程序在 ...
- 3.6 scikit-learn:Python中的机器学习
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&am ...
- 关于WEB-INF目录不提供外部访问及JSP引用 js,css 文件路径问题
在 web 项目开发过程中,我们常常使用到 JSP,以及对静态资源,js,css 等引用,但是我们应该把这些资源文件放在哪个目录下面咧,怎么引用. 当然如果是前后端分离的项目倒不用考虑这些. WEB- ...
- bzoj 2502 清理雪道 (有源汇上下界最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MB Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场 ...
- 「七天自制PHP框架」第一天:路由与控制器
我们为什么要使用路由? 原因1:一个更漂亮的URI 1.URI的改进 刚刚开始学PHP时,我们一定写过blog.php?id=1之类的URI,使用GET方式获取参数.这样的URI有两个缺点,一是容易被 ...
- JAVA多线程提高十二:阻塞队列应用
一.类相关属性 接口BlockingQueue<E>定义: public interface BlockingQueue<E> extends Queue<E> { ...
- MongoDB 分页
使用Skip和limit可以如下做数据分页: Code: page1 = db.things.find().limit(20) page2 = db.things.find().skip(20).li ...