Mex error with GNU Scientific Library

4 次查看(过去 30 天)
Hi,
I've downloaded c++ code from the file exchange that implements the low discrepancy sequence generator by Niederreiter. Just like the instructions say in the Readme, I installed the GNU Scientific Library (GSL) and then tried to compile the code using the following command:
mex niederreiter.c -lgsl -lgslcblas -lm
However, this gives me the following errors:
niederreiter.c:28:27: error: gsl/gsl_qrng.h: No such file or directory
niederreiter.c: In function 'mexFunction':
niederreiter.c:80: error: 'gsl_qrng' undeclared (first use in this function)
niederreiter.c:80: error: (Each undeclared identifier is reported only once
niederreiter.c:80: error: for each function it appears in.)
niederreiter.c:80: error: 'q' undeclared (first use in this function)
niederreiter.c:196: error: 'gsl_qrng_niederreiter_2' undeclared (first use in this function)
mex: compile of ' "niederreiter.c"' failed.
I'm perplexed why these files/directories can't be found, since the installation of GSL worked without any problems - I even ran make check, but it didn't find any issues.
Any idea what's wrong here? Thanks..
btw: I'm using MatlabR2012a and MatlabR2012b on MacOSX 10.6.8. XCode 3.2.6 is installed.
  2 个评论
Lokesh Ravindranathan
I have not tried to install the package, but from the error message could you check if the header file (gsl_qrng.h)is present. It seems like the rest of the errors is because the symbols are defined in the header file and the main function does not have access to it.
dave
dave 2013-10-2
编辑:dave 2013-10-2
Yes, the header file is there. So I guess it probably has something to do with the path..

请先登录,再进行评论。

采纳的回答

Harsheel
Harsheel 2013-10-2
I think you need to provide the -I (capital i) flag along with MEX so that MEX can find the #include's present in niederreiter.c
mex niederreiter.c -I<path_to_gsl_qrng.h> -lgsl -lgslcblas -lm
Note that the angular brackets are not required and that there should not be any space character between I and the path that you provide. More info. can be found here:
  4 个评论
dave
dave 2013-10-2
@Jan Simon: Ah, that's my mistake - I thought it'd only search for "gsl_qrng.h". Thanks a lot for your help, now the compilation works fine.
Li Fei
Li Fei 2014-3-5
编辑:Li Fei 2014-3-5
Hi experts in Matlab and GSL, @dave @Jan Simon @Harsheel,
I am also using the GSL in Matlab. But I can not figure out how to call the GSL function in Matlab. GSL is for linux, however I am using Matlab in Windows. Could you please give some advice to me about the GSL calling from Matlab in Windows.
Thank you very much in advance.
PS: I'm using MatlabR2013a on Windows XP SP3.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Write C Functions Callable from MATLAB (MEX Files) 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by