eclipse — ошибка программирования библиотеки NI-VISA вне области видимости

В настоящее время я пытаюсь запрограммировать осциллограф Rigol DS1054 для вывода данных формы сигнала. Чтобы создать эту программу, я пишу на C ++ с использованием Code :: Blocks, но я пробовал это на четырех других компиляторах (Netbeans, Eclipse Mars, Eclipse Juno, Visual Basic 2012), но каждый из них постоянно приводит к ошибке. Вот что я сделал до сих пор:

  • Подтвердил, что C ++ не был проблемой, создав и запустив программу Hello World
  • Связанный файл заголовка по этому пути (C: \ Program Files (x86) \ Фонд IVI \ VISA \ WinNT \ Включить)
  • Связал библиотеку по этому пути (C: \ Program Files (x86) \ Фонд IVI \ VISA \ WinNT \ lib \ msc \ visa32.lib)
  • Применяется библиотека для каждого проекта

Я также попытался использовать 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

Решение

Функция называется viOpenDefaultRMне ViOpenDefaultRM,

Во избежание вашей путаницы с такими ошибками в будущем,
ViOpenDefaultRM(&rmSession) в вашем коде нет декларация из
функция, это вызов или вызов функции (или будет, если таковой
функция существовала).

В C ++ компилятор должен видеть декларация функции
прежде чем он разрешит вызовы этой функции, так что он может сказать
соответствует ли вызов подписи функции (или одному из
подписи перегруженной функции), и объявление должно быть
все еще в области действия в момент вызова.

Декларация viOpenDefaultRM является:

ViStatus _VI_FUNC  viOpenDefaultRM (ViPSession vi);

Вы найдете это в visa.hи это находится в области действия в точке, где вы
попытался позвонить ViOpenDefaultRM потому что, в том числе visa.h
прежде чем вы определите main, заявлено в объеме, включающем main,
то есть в глобальном масштабе.

1

Другие решения


По вопросам рекламы [email protected]