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 Kommentare

Lokesh Ravindranathan
Lokesh Ravindranathan am 2 Okt. 2013
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 am 2 Okt. 2013
Bearbeitet: dave am 2 Okt. 2013
Yes, the header file is there. So I guess it probably has something to do with the path..

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Harsheel
Harsheel am 2 Okt. 2013

0 Stimmen

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 Kommentare

Harsheel, I followed your suggestion and modified the command to this:
mex niederreiter.c -I/usr/local/include/gsl -lgsl -lgslcblas -lm
However, that still gives me the same errors as before..
Jan
Jan am 2 Okt. 2013
@dave: The file "gsl/gsl_qrng.h" is searched. You provide the folder "/usr/local/include/gsl". So is full path of the header file: "/usr/local/include/gsl/gsl/gsl_qrng.h" with "gsl" twice?
dave
dave am 2 Okt. 2013
@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 am 5 Mär. 2014
Bearbeitet: Li Fei am 5 Mär. 2014
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB Compiler SDK finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 2 Okt. 2013

Bearbeitet:

am 5 Mär. 2014

Community Treasure Hunt

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

Start Hunting!

Translated by