MATLAB: Mex error with GNU Scientific Library

cerrorgslmex

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.

Best Answer

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:
Related Question