01-20-2015 03:56 AM
LINUXでNIVISAを使用してTCP/IP通信でSCPIコマンドを送信しようとしています。
NIVISA、Nidaqbaseなどはインストールでき、テストパネルから文字列を送信できるところまでは確認できておりますが、
以下の簡単なCプログラムを作成し、GCCにてコンパイルしようとしていますが、エラーが出てしまい進みません。
何か助言を頂けると助かります。
#include <stdio.h>
#include <string.h>
#include "visa.h"
int main(int argc, _TCHAR* argv[])
{
ViSession rm, inst;
ViStatus viError;
ViUInt32 retCount;
viError = viOpenDefaultRM(&rm);
viError = viOpen(rm, "TCPIP0::192.168.1.199::inst0::INSTR", VI_NULL, VI_NULL, &inst);
viError = viWrite(inst, (ViBuf)":SENS:FREQ:CENT 2GHZ¥n", 20, &retCount);
viError = viClose(inst);
viError = viClose(rm);
return 0;
}
# gcc MS2720T.c -lm - I/usr/local/include/ -L/usr/local/vxipnp/linux/lib/libvisa.so
以下のようなエラーが出ます。
/tmp/ccM8DhQ7.o: In function 'main':
MS2720T.c:(.text+0x21): undefined reference to 'viOpenDefaulRM'
MS2720T.c:(.text+0x44): undefined reference to 'viOpen'
MS2720T.c:(.text+0x65): undefined reference to 'viWrite'
MS2720T.c:(.text+0x72): undefined reference to 'viClose'
MS2720T.c:(.text+0x72): undefined reference to 'viClose'
collect2: ldはステータス 1 で終了しました。
ちなみに環境は
CentOS6.6-x86_64 64bit(RedHat系)
GCC-4.4.7
です。
別の投稿のLINUX上でNIVISAを使用できないという投稿も参考にさせて頂きました。
まだまだ未熟なもので、ご助言願います。
よろしくお願いいたします。
解決済! 解決策の投稿を見る。
01-21-2015 12:34 AM
お騒がせしました。
CentOS6.6 32bit環境でコンパイルした場合、
エラーなく実行ファイルを生成する事が出来ました。
よく見るとLinuxの場合、32bitアプリケーションのみサポートされているようで、
ライブラリが64bitに対応していないため、リンクできずエラーとなっていました。
勉強不足ですみません。
ありがとうございました。