我正在尝试将一些Visa代码包含在我的mex文件中,但无法弄清楚为什么功能无法解决。代码和matlab输出如下所示。有没有人暗示我做错了什么? 欢呼声
EAC
的SourceFile:
#include "mex.h"
#include <stdio.h> /* For printf(). */
#include <string.h> /* For strcpy(), strcat(). */
#include <time.h> /* For clock(). */
#include "visa.h" /* Agilent VISA routines. */
#define VISA_ADDRESS "USB0::0x0957::0x17A6::MY51136169::0::INSTR"
#define IEEEBLOCK_SPACE 5000000
ViSession defaultRM, vi;
void do_command(char *command); /* Send command. */
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[]) {
do_command("*RST");
}
void do_command(command)
char *command;
{
char message[80];
strcpy(message, command);
strcat(message, "\n");
viPrintf(vi, message);
}
Matlab输出:
>> mex HelloWorld.c -Lvisa32.lib
Writing library for HelloWorld.mexw32
c:\users\pehrlich\appdata\local\temp\mex_c04c6da5-c5ef-49d8-a8aa-c5107c66b1fa\helloworld.obj .text: undefined reference to '_viPrintf'
D:\MATLAB\R2006B\BIN\MEX.PL: Error: Link of 'HelloWorld.mexw32' failed.
??? Error using ==> mex
Unable to complete successfully.
答案 0 :(得分:3)
您没有使用mex
的正确标记。
而不是告诉mex
在哪里寻找库:
>> mex HelloWorld.c -Lvisa32.lib
告诉它what
库使用(注意小写):
>> mex HelloWorld.c -lvisa32.lib