MATLAB fails to read MEX file

7 visualizaciones (últimos 30 días)
Alexander
Alexander el 17 de Jul. de 2015
Comentada: Alexander el 20 de Jul. de 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

Respuestas (2)

Walter Roberson
Walter Roberson el 17 de Jul. de 2015
At the command line give the command
rehash toolboxcache
  2 comentarios
Alexander
Alexander el 17 de Jul. de 2015
Thanks Walter, but unfortunately this doesn't change anything.
Walter Roberson
Walter Roberson el 17 de Jul. de 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.

Iniciar sesión para comentar.


Steven Lord
Steven Lord el 17 de Jul. de 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 comentarios
Walter Roberson
Walter Roberson el 18 de Jul. de 2015
Yes you will need to rebuild netCDF and CDI for 64 bit.
Alexander
Alexander el 20 de Jul. de 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.

Iniciar sesión para comentar.

Categorías

Más información sobre Reference Applications en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by