MATLAB fails to read MEX file

7 Ansichten (letzte 30 Tage)
Alexander
Alexander am 17 Jul. 2015
Kommentiert: Alexander am 20 Jul. 2015
In the institution I work with MATLAB there was recently a system update (debian).
Before this I could read GRIB files with the NetCDF/GRIB reader function cdi_readfile.
After the update this isn't possible no longer. A code snippet would look like:
data=cdi_readfield(<path to file>,[],'var100');
I have tried this with MATLAB R2010b and R2013b. Both times the same error message:
??? Attempt to execute SCRIPT cdi_readfield as a function:
<some path>/matlab-cdi/cdi_readfield.m
In the matlab-cdi folder there is a cdi_readfield.m which contains only comments and the MEX file cdi_readfield.mexglx
Apparently MATLAB only "see" cdi_readfield.m and not the MEX file. Hence it fails to read the GRIB file.
So I guess it has something to do with the update of the OS.
Did somebody make a similar experience or can give a hint what could be the reason?
Thanks

Antworten (2)

Walter Roberson
Walter Roberson am 17 Jul. 2015
At the command line give the command
rehash toolboxcache
  2 Kommentare
Alexander
Alexander am 17 Jul. 2015
Thanks Walter, but unfortunately this doesn't change anything.
Walter Roberson
Walter Roberson am 17 Jul. 2015
The mexglx extension appears to be for 32 bit Linux. It is possible that you upgraded to 64 bit Linux, which would use mexa64 as the extension.
You should go back to the cdi directory and use the "compile" function to create a .mexa64 for use on your system.

Melden Sie sich an, um zu kommentieren.


Steven Lord
Steven Lord am 17 Jul. 2015
The extension .mexglx is the correct extension for 32-bit Linux MEX-files. As part of the OS upgrade, did you upgrade to 64-bit Linux? If so, you will need to rebuild the MEX-file (or if you don't have the source code, ask the person from whom you obtained the MEX-file to provide you with a new file.) The new MEX-file should have the extension .mexa64 as described in the documentation for MEXEXT.
  9 Kommentare
Walter Roberson
Walter Roberson am 18 Jul. 2015
Yes you will need to rebuild netCDF and CDI for 64 bit.
Alexander
Alexander am 20 Jul. 2015
Update: After I took 64-bit builds of netCDF and CDI libraries I tried to compile again with MATLAB R2013b (hence no gcc compiler warning).
Now I get the following errors:
COMPILING cdi_varlist...
cdi_mx.c: In function ‘getLevel’:
cdi_mx.c:431:43: warning: incompatible implicit declaration of built-in function ‘modf’ [enabled by default]
cdi_mx.o: In function `getLevel':
cdi_mx.c:(.text+0x78c): undefined reference to `Warning'
lib64/libcdi.a(cdf.o): In function `hdfLibraryVersion':
(.text+0x24): undefined reference to `H5get_libversion'
lib64/libcdi.a(gribapi.o): In function `gribapiLibraryVersion':
(.text+0x5): undefined reference to `grib_get_api_version'
lib64/libcdi.a(stream_gribapi.o): In function `gribapiGetValidityDateTime':
(.text+0x27): undefined reference to `grib_get_long'
.....
.....
lib64/libnetcdf.a(libnetcdf4_la-nc4attr.o): In .function `NC4_del_att':
(.text+0x157f): undefined reference to `H5Adelete'
collect2: error: ld returned 1 exit status
mex: link of ' "cdi_varlist.mexa64"' failed.
I'm not completely sure, if there is still a problem with the libraries. Or if the NetCDF/GRIB reader is just outdated, and not usable for 64-bit systems.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Reference Applications finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by