mex: linker does not seem to be able to access external lib file; -l & -L options not helping
古いコメントを表示
For a project for college I need to write an S-Function in Matlab to acquire data from a data acquisition device (NI USB-6008).
Then I added to my basic S-Function (NI_USB_6008_AnalogInput.c):
#include "NIDAQmx.h"
and then added this declaration to the function 'mdlOutputs':
TaskHandle taskHandle = 0;
(The 'TaskHandle' type is declared in the header file above.)
That compiles.
However, when I try to call a function from the NIDAQmx library:
DAQmxCreateTask("", taskHandle);
I get the following error:
>> mex NI_USB_6008_AnalogInput.c
Writing library for NI_USB_6008_AnalogInput.mexw32
c:\docume~1\l10\config~1\temp\ni_usb_6008_analoginput.obj .text:
undefined reference to '_DAQmxCreateTask@8'
C:\ARCHIVOS DE PROGRAMA\MATLAB\R2006A\BIN\MEX.PL: Error: Link of
'NI_USB_6008_AnalogInput.mexw32' failed.
??? Error using ==> mex
Unable to complete successfully
(I tried two compilers: the default one, LCC, and MS Visual C++ 2005, the error is similar with both of them.)
The problem, I understand, is that the compiler generates an object file with the correct reference to the function I'm trying to call, but then the linker is unable to access that function from the NIDAQmx.lib library. (Both the header and the library files are in the same directory as the source file.)
I tried using the -l and -L options to MEX and adding the .lib file at the end of the mex command, but I still get the same error message.
(I shuold add that I could successfully compile a simple C file with calls to the NIDAQmx library using MS Visual C++ 2005, but in Matlab I get the linker error, even when Matlab is configured to use the MS compiler.)
Can anyone suggest a solution?
FWIW, I'm running Matlab R2006a (7.2) on Windows XP with SP2.
Thank you.
Ignacio
採用された回答
その他の回答 (1 件)
Titus Edelhofer
2012 年 7 月 27 日
Hi,
you are right, you need the -l and -L. Your call should look something like
mex NI_USB_6008_AnalogInput.c -Lc:\someFolder -lsomLibrary.lib
Second, I would compile using verbose mode, i.e.
mex -v ...
to see in more detail what happens. Please try both (again) and tell us what happens, or what error comes up ...
Titus
6 件のコメント
Titus Edelhofer
2012 年 7 月 27 日
And if you are able to compile using VC++, use this one in MATLA as well.
Titus Edelhofer
2012 年 7 月 27 日
Do you have the header file in the same folder? Otherwise you will need the -I flag to specify the folder ...
Ignacio
2012 年 7 月 27 日
Ignacio
2012 年 7 月 28 日
Titus Edelhofer
2012 年 7 月 30 日
Hi Ignacio,
I'm sorry but I have to admit I don't know any further. If you followed the advice about the Platform SDK, I don't know what to do next except for trying to contact MathWorks support...
Titus
Ignacio
2012 年 7 月 30 日
カテゴリ
ヘルプ センター および File Exchange で MATLAB Compiler についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!