C++ 中的 NI-VISA 库编程 - 超出范围错误
NI-VISA library programming in C++ - out of scope error
我目前正在尝试对 Rigol DS1054 示波器进行编程以输出波形数据。为了创建这个程序,我使用 Code::Blocks 在 C++ 中编写,但我已经在其他四个编译器(Netbeans、Eclipse Mars、Eclipse Juno、Visual Basic 2012)上尝试过这个,但每个编译器都不断导致错误。这是我到目前为止所做的:
- 通过构建和 运行ning 一个 Hello World 程序确认 C++ 不是问题
- 按照此路径链接头文件(C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Include)
- 使用此路径链接库 (C:\Program Files (x86)\IVI Foundation\VISA\WinNT\lib\msc\visa32.lib)
- 为每个项目应用库
我也尝试过使用 64 位版本,但我得到了同样的错误。这是我当前的代码:
#include <iostream>
#include <visa.h>
using namespace std;
int main () {
ViSession rmSession;
ViOpenDefaultRM(&rmSession);
return 0;
}
代码很简单,但是当运行、returns这个错误:
error: 'ViOpenDefaultRm' was not declared in this scope
这确实很奇怪,因为它显然在范围内。这么多天以来,这一直给我带来麻烦 - 任何帮助将不胜感激。谢谢!
调用的函数是viOpenDefaultRM
,而不是ViOpenDefaultRM
。
为了避免您以后因此类错误而感到困惑,
您代码中的 ViOpenDefaultRM(&rmSession)
不是 声明
一个函数,它是一个函数的调用或调用(或者如果这样的话
存在一个函数)。
在 C++ 中,编译器必须看到函数的 声明
在它允许调用该函数之前,以便它可以告诉
调用是否符合函数的签名(或符合以下之一
重载函数的签名),并且声明必须是
在调用时仍在范围内。
viOpenDefaultRM
的声明是:
ViStatus _VI_FUNC viOpenDefaultRM (ViPSession vi);
您会在 visa.h
中找到它,并且它在您所在位置的范围内
已尝试调用 ViOpenDefaultRM
,因为通过包含 visa.h
在定义 main
之前,它是在包含 main
的范围内声明的,
即在全球范围内。
我目前正在尝试对 Rigol DS1054 示波器进行编程以输出波形数据。为了创建这个程序,我使用 Code::Blocks 在 C++ 中编写,但我已经在其他四个编译器(Netbeans、Eclipse Mars、Eclipse Juno、Visual Basic 2012)上尝试过这个,但每个编译器都不断导致错误。这是我到目前为止所做的:
- 通过构建和 运行ning 一个 Hello World 程序确认 C++ 不是问题
- 按照此路径链接头文件(C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Include)
- 使用此路径链接库 (C:\Program Files (x86)\IVI Foundation\VISA\WinNT\lib\msc\visa32.lib)
- 为每个项目应用库
我也尝试过使用 64 位版本,但我得到了同样的错误。这是我当前的代码:
#include <iostream>
#include <visa.h>
using namespace std;
int main () {
ViSession rmSession;
ViOpenDefaultRM(&rmSession);
return 0;
}
代码很简单,但是当运行、returns这个错误:
error: 'ViOpenDefaultRm' was not declared in this scope
这确实很奇怪,因为它显然在范围内。这么多天以来,这一直给我带来麻烦 - 任何帮助将不胜感激。谢谢!
调用的函数是viOpenDefaultRM
,而不是ViOpenDefaultRM
。
为了避免您以后因此类错误而感到困惑,
您代码中的 ViOpenDefaultRM(&rmSession)
不是 声明
一个函数,它是一个函数的调用或调用(或者如果这样的话
存在一个函数)。
在 C++ 中,编译器必须看到函数的 声明 在它允许调用该函数之前,以便它可以告诉 调用是否符合函数的签名(或符合以下之一 重载函数的签名),并且声明必须是 在调用时仍在范围内。
viOpenDefaultRM
的声明是:
ViStatus _VI_FUNC viOpenDefaultRM (ViPSession vi);
您会在 visa.h
中找到它,并且它在您所在位置的范围内
已尝试调用 ViOpenDefaultRM
,因为通过包含 visa.h
在定义 main
之前,它是在包含 main
的范围内声明的,
即在全球范围内。