VC编程,GPIB仪器控制,怎么隐式连接DLL文件啊!

duguyun duguyun 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
想用GPIB协议控制仪器,但一直没成功,谁编写过类似的程序,能帮我分析下我错在哪不?

先谢谢大家了!

现手头有NI提供的,Ni4882.dll和Ni4882.h,以及gpib-32.dll和gpib-32.obj文件,,电脑上装了Ni的驱动程序,可以正常用GPIB协议驱动仪器,但没有def文件。

因编写的程序需要调用dll文件里的ibdev、ibwrt、ibclr等函数,根据NI的文件说明和 用Depends查看的结果,
Ni4882.dll和gpib-32.dll,也确实包含这些函数。

想隐式调用dll文件,dll相关文件放在当前程序目录下,使用两种方法:
1、在Mytest.Cpp文件中:
include "ni4882.h"

#pragma comment(lib,"ni4882.dll")
extern _declspec(dllimport) ibwrt(parm1,parm2,parm3)

2、在Project/ Setting中加入 gpib-32.obj
extern _declspec(dllimport) ibwrt(parm1,parm2,parm3)

这两种方法编译都可以顺利通过,但没法通过链接
提示错误:warning LNK4003:invalid library format;library ignored
ni4882.obj:error LNK2001:无法辨识的外部符号
或者,fatal error LNK1120:1 unresolved externals Error executing link.exe

但如果用显式调用,程序可以正常通过,不过我想用隐式的,因为后面很多Class中都要调用它的函数,很频繁

查看网站资料,没怎么看懂,附在下面:

为什么在Microsoft Visual C\C++中使用NI-488.2驱动时会产生连接错误(LNK 2019)?



主要软件:
主要软件版本: 1.0
主要软件修正版本: N/A
次要软件: N/A
硬件: GPIB

问题:
我在Microsoft Visual C\C++ 中使用了NI-488.2驱动,并且依照帮助文档中的指示包含了头文件ni4882.h,但是当我编译该文件时,却会产生连接错误LNK 2019:未定义的外部符号。我该怎么样才能编译我的工程文件呢?


解答:
除了需要包括头文件C:\Program Files\National Instruments\Shared\ExternalCompilerSupport\C\Headers\ni4882.h,还必须包括目标文件。这个目标文件就是ni4882.obj,它可以在以下路径中找到:C:\Program Files\National Instruments\Shared\ExternalCompilerSupport\C\Lib32\ni4882.obj。有三种方法可以实现包括该目标文件:

创建Measurement Studio 项目。

当创建Measurement Studio 项目时需要设置要包括的文件,这并不是一个很难的问题。
在项目中包括需要的文件。

在你的项目中添加目标文件(C:\Program Files\National Instruments\Shared\ExternalCompilerSupport\C\Lib32\ni4882.obj)
通过连接选项中添加文件。

在Visual Studio中打开项目»属性.
在树形列表中选择连接.
在命令行中输入%NIEXTCCOMPILERSUPP%\lib32\msvc\ni4882.obj
这个环境变量指向选项2中的外部编译器支持所对应的文件夹。

现在该项目就应该能够成功的编译和连接了。


...全文

相关推荐

GPIB卡控制源码(包括vb,c#,vb.net,labview,bcb,Delphi,vc)

GPIB卡控制源代码,包括vb,c#,vb.net,labview,bcb,Delphi,vc

yangsen75259

VC上位机通过GPIB控制仪器:从DLL到SCPI的完整实践

仪器控制是自动化测试系统的基础,GPIB(IEEE 488)总线因其可靠性和实时性在电子测量领域广泛应用。上位机通过调用动态链接库DLL接口与GPIB控制器通信,实现SCPI命令的下发和数据回读。理解GPIB的初始化、设备寻址、读写时序以及错误处理,是构建稳定上位机程序的关键。在实际工程项目中,VC作为经典开发环境,常与gpib-32.dll、gpib-488.dll等配套使用,完成对万用表、示波器等仪器的远程控制。本文基于GPIB-VC.zip示例工程,详细剖析其文件构成、VC工程配置、关键API调用及常

静默修行

GPIB卡控制源码详解:VB、C#、LabVIEW等七种语言实测

在自动化测试与仪器控制领域,GPIB总线凭借其稳定握手协议与高可靠性,至今仍是实验室与产线设备通信的核心接口。通过VISA抽象层,上层应用无需感知底层硬件差异,即可实现会话管理、指令下发与数据回读。基于这一原理,同一套SCPI指令逻辑可以在C#、VB.NET、LabVIEW、VB6、Delphi、BCB、VC++等不同技术栈中复用,极大降低了多平台测试系统的集成门槛。文章围绕一套覆盖七种语言的GPIB卡控制源码,梳理了各语言调用VISA驱动的典型方式、关键代码与踩坑经验,为从事自动化测试开发的工程师提供了从

是小鬏鬏啊

GPIB与IEEE-488总线通信:从gpib-32.dll到VC6上位机开发实践

在仪器控制与自动化测试领域,GPIB(IEEE-488)总线凭借其标准化的接口协议,长期连接着PC与信号源、万用表、频谱仪等测量设备。其核心价值在于通过统一的ASCII命令和寄存器接口,屏蔽底层硬件差异,使开发者能够专注于上层逻辑。VC6作为经典的上位机开发环境,配合gpib-32.dll动态链接库,可高效实现设备寻址、命令写入与数据读取。从ibdev、ibwrt到ibrd的函数调用链,构成了仪器通信的标准范式。这类技术广泛应用于实验室自动化、产线测试和科研数据采集场景。了解GPIB总线的三层角色和DLL分

慕北颖

VC++ GPIB上位机开发:gpib-32.dll加载与ibdev调用

在仪器自动化测试中,上位机通过动态链接库调用硬件 API 是最常见的通讯方式。其原理是编译期依赖头文件声明,链接期解析导入符号,运行期再由 DLL 与板卡、仪器完成数据交互。相比直接硬编码地址,显式加载 DLL 能更早暴露依赖缺失、路径冲突和调用约定问题。对 GPIB 测试台架而言,这类机制可把 SCPI 命令、设备地址、超时参数稳定地落到 VC 上位机里,避免仪器无法连接或测试线程卡死。面对 gpib-32.dll、gpib.h 与 gpib-l.obj 组成的驱动散件,工程侧需要理清 LoadLibra

任云舒
评论 9
收藏 已收藏
分享
返回顶部
duguyun
进程/线程/DLL 15,465 成员 49,169 内容