В настоящее время я пытаюсь запрограммировать осциллограф Rigol DS1054 для вывода данных формы сигнала. Чтобы создать эту программу, я пишу на C ++ с использованием Code :: Blocks, но я пробовал это на четырех других компиляторах (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
Это действительно странно, так как оно явно в поле зрения. Это доставляло мне неприятности в течение стольких дней — любая помощь была бы очень признательна. Спасибо!
Функция называется viOpenDefaultRM
не ViOpenDefaultRM
,
Во избежание вашей путаницы с такими ошибками в будущем,
ViOpenDefaultRM(&rmSession)
в вашем коде нет декларация из
функция, это вызов или вызов функции (или будет, если таковой
функция существовала).
В C ++ компилятор должен видеть декларация функции
прежде чем он разрешит вызовы этой функции, так что он может сказать
соответствует ли вызов подписи функции (или одному из
подписи перегруженной функции), и объявление должно быть
все еще в области действия в момент вызова.
Декларация viOpenDefaultRM
является:
ViStatus _VI_FUNC viOpenDefaultRM (ViPSession vi);
Вы найдете это в visa.h
и это находится в области действия в точке, где вы
попытался позвонить ViOpenDefaultRM
потому что, в том числе visa.h
прежде чем вы определите main
, заявлено в объеме, включающем main
,
то есть в глобальном масштабе.