我目前正在尝试对Rigol DS1054示波器进行编程以输出波形数据。为了创建这个程序,我使用Code :: Blocks在C ++中编写,但我在其他四个编译器(Netbeans,Eclipse Mars,Eclipse Juno,Visual Basic 2012)上尝试过这个,但是每个编译器都会连续导致错误。以下是我到目前为止所做的事情:
我也试过使用64位版本,我得到了同样的错误。这是我目前的代码:
#include <iostream>
#include <visa.h>
using namespace std;
int main () {
ViSession rmSession;
ViOpenDefaultRM(&rmSession);
return 0;
}
代码非常简单,但运行时会返回此错误:
error: 'ViOpenDefaultRm' was not declared in this scope
这很奇怪,因为它显然属于范围。这给了我很多天的麻烦 - 任何帮助都会非常感激。谢谢!
答案 0 :(得分:1)
该函数名为ViOpenDefaultRM
,而不是ViOpenDefaultRM(&rmSession)
。
为避免将来因此类错误而造成混淆,
代码中的viOpenDefaultRM
不是声明
一个函数,它是一个函数的调用或调用(或者,如果是这样的话
存在的功能)。
在C ++中,编译器必须看到函数的声明 在它允许调用该函数之前,它可以告诉它 调用是否符合函数的签名(或者其中一个) 重载函数的签名),声明必须是 仍然在调用范围内。
ViStatus _VI_FUNC viOpenDefaultRM (ViPSession vi);
的声明是:
visa.h
您可以在ViOpenDefaultRM
找到它,它就在您的范围内
试图通过加入visa.h
来致电main
在定义main
之前,它在封闭{{1}}的范围内声明,
即在全球范围内。