我想知道是否有人可以帮助我。我正在使用 CodeBlocks WxWidgets 在 C++ 中编写一个 NI-DAQmx 应用程序。
我正在使用最新版本的 mingw-w64 编译器和 Windows 10。
编译时,我收到 DAQmx___ 语句的未定义引用错误:
`DAQmxCreateTask',
'DAQmxClearTask',
'DAQmxCreateAIVoltageChan',
和别的。
我在项目中包含了 NIDAQmx.h、NIDAQmx.lib 文件。我已经搜索了几天,并阅读了有关该问题的帖子,阅读了有关包装文件和 NIDAQmx.h 中的黑客攻击,但似乎找不到任何帮助。
代码片段:
#include <math.h>
#include <limits>
#include "NIDAQmx.h"
int PxiError = 0;
TaskHandle taskHandle=0;
float64 data[32];
char errBuff[2048]={'\0'};
int32 readstuff;
#define DAQmxErrChk(functionCall) if( DAQmxFailed(PxiError=(functionCall)) ) goto Error; else
double AnalogInputs(unsigned int t)
{
// DAQmx Configure Code
DAQmxErrChk (DAQmxCreateTask("",&taskHandle));
DAQmxErrChk (DAQmxCreateAIVoltageChan(taskHandle,"PXI1Slot4/ai0:31","Voltage",DAQmx_Val_Cfg_Default, -10.0, 10.0, DAQmx_Val_Volts, NULL));
// DAQmx Start Code
DAQmxErrChk (DAQmxStartTask(taskHandle));
// DAQmx Read Code
//(TaskHandle taskHandle, int32 numSampsPerChan, float64 timeout, bool32 fillMode, float64 readArray[], uInt32 arraySizeInSamps, int32 *sampsPerChanRead, bool32 *reserved);
DAQmxErrChk (DAQmxReadAnalogF64(taskHandle,1,10.0,DAQmx_Val_GroupByChannel,data,32,&readstuff,NULL));
//Error handling
Error:
if( DAQmxFailed(PxiError) )
DAQmxGetExtendedErrorInfo(errBuff,2048);
if( taskHandle!=0 ) {
// DAQmx Stop Code
DAQmxStopTask(taskHandle);
DAQmxClearTask(taskHandle);
}
}
任何意见,将不胜感激,
谢谢,
保罗