MATLAB: Compiling a C program to read .mat files

c compile mat file

Hi guys,
I've been struggling with this one for a few days now, I hope somebody can shed some light 🙂
I have some .mat files containing several matrices containing 3D points, and I want this data in my C program to create some nice graphics using OpenGL. My problem is that I can't seem to compile the code. I've read the documentation concerning this (http://www.mathworks.com/help/techdoc/matlab_external/f14500.html#f32276) and the matdgns.c file seems to do exactly what I want, but I can't seem to make it compile!
I'm using Ubuntu 10.10 64-bit and gcc 4.3.5 and I'm compiling with this command:
gcc -I/usr/local/matlabR2009b/extern/include -o matdgns matdgns.c -L/usr/local/matlabR2009b/bin/glnxa64 -lmat -lmx
I'm not sure if the code needs both those libraries to compile but I've tried all combinations of the two and no joy. Here is the output my compiler gives me:
matdgns.c: In function diagnose:
matdgns.c:81: warning: format %d’ expects type ‘int’, but argument 3 has type ‘mwSize’

matdgns.c:112: warning: format %d’ expects type ‘int’, but argument 3 has type ‘mwSize’
/usr/bin/ld: warning: libut.so, needed by /usr/local/matlabR2009b/bin/glnxa64/libmat.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libhdf5_hl.so.0, needed by /usr/local/matlabR2009b/bin/glnxa64/libmat.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libhdf5.so.5, needed by /usr/local/matlabR2009b/bin/glnxa64/libmat.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libmwfl.so, needed by /usr/local/matlabR2009b/bin/glnxa64/libmx.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libicudata.so.40, needed by /usr/local/matlabR2009b/bin/glnxa64/libmx.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libicuuc.so.40, needed by /usr/local/matlabR2009b/bin/glnxa64/libmx.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libicui18n.so.40, needed by /usr/local/matlabR2009b/bin/glnxa64/libmx.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libicuio.so.40, needed by /usr/local/matlabR2009b/bin/glnxa64/libmx.so, not found (try using -rpath or -rpath-link)
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tget_member_type'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_array_length'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5P_CLS_FILE_CREATE_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_SHORT_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Pset_type_conv_cb'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Pcreate'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tcopy'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_ghash_query'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Aget_space'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Sget_simple_extent_dims'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Eset_auto2'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utSingleConvert'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utf16_strlen_lim'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utGetFormatEndian'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utf16_strcpy'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Sget_simple_extent_ndims'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Aget_type'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Fcreate'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Pset_layout'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Sclose'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utFinite'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utF2cstr'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Rcreate'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utFlipFourBytes'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_SCHAR_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tlock'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Aopen_name'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tget_class'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `typeinfo for MathWorks::System::InternalException'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `fl::mem::aligned_heap::instance'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Gunlink'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tget_nmembers'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utFree'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Acreate2'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `MathWorks::I18N::cast(MathWorks::I18N::UnicodeConverterX*)'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utTmpnam'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Aclose'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_ULONG_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Pset_deflate'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_C_S1_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `MathWorks::System::InternalException::InternalException()'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `MathWorks::I18n::init__lcmgmt_init(int)'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Dopen2'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utIsMultiByteCharSet'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_delete_ghash_table'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Dget_type'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_FLOAT_g'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `init_util_utassert(int)'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_get_message_mnemonic'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ucnv_getNextUChar_4_0'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utResetFPU'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utf16_strlen'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Dwrite'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utC2fstr'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Screate_simple'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tget_member_name'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_mem_add_primary_message_table'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Aread'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utSNprintf'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_ghash_insert'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5check_version'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utPrintf'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utTwoByteUIntConvert'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Gcreate2'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utGetNamehashContext'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_namehash_add'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utCallRegisteredWarningCallback'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tget_size'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utSetLastWarningMsg'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Gget_objname_by_idx'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tvlen_create'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_UCHAR_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Eget_auto2'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utRealloc'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Aget_name'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utRegisterSetWarningStatusCallback'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Screate'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Sselect_elements'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utStrdup'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utFourByteIntConvert'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5P_CLS_DATASET_XFER_g'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utf16_strncpy'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utFdlibm_ceil(double)'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Gopen2'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utf16_to_lcp_n'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `MathWorks::I18N::UnicodeConverterX::getThreadSpecific(char const*)'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `MathWorks::System::InternalException::writeStackTrace(MathWorks::System::ObjectOutput&) const'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Dget_space'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ucnv_fromUChars_4_0'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `MathWorks::I18N::FromUTF16Converter::~FromUTF16Converter()'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utGetWarningStatus'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `MathWorks::I18N::FromUTF16Converter::copy_to(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utFlipEightBytes'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_array_new'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Dclose'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Aget_num_attrs'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_UINT64_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tget_sign'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_LONG_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utTwoByteIntConvert'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utGetSingleEps()'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utGetFourByteInt'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `fl::mem::create_managed_pool(unsigned long, unsigned long)'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `MathWorks::System::Throwable::writeExternal(MathWorks::System::ObjectOutput&) const'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Pset_userblock'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Pclose'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utVSNprintf'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utGetErrorContext'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `MathWorks::I18N::FromUTF16Converter::FromUTF16Converter(unsigned short const*, int, char const*)'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Sget_simple_extent_type'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Rget_obj_type2'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utGetMemoryContext'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_UINT_g'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utGetNaN'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utMalloc'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tinsert'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_INT64_g'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `fl::app::init::~init()'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Gget_objinfo'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utLowerCaseCopy'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Rdereference'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Sselect_hyperslab'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_INT_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Gclose'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ucnv_reset_4_0'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_new_ghash_table'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Pget_type_conv_cb'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utSetLastPrintedWarningId'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Awrite'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Sget_simple_extent_npoints'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `fl::mem::manager::instance()'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utCalloc'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utDoubleConvert'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5open'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Dread'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utDoubleScalarRound'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ucnv_toUChars_4_0'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tcreate'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Dfill'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Aopen_idx'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `ut_symtab_add'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_ghash_replace'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ucnv_fromUnicode_4_0'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Gget_num_objs'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tset_size'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `MathWorks::System::InternalException::writeLocalizedMsg(MathWorks::System::ObjectOutput&) const'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utGetWarningManagerContext'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utSetOutOfMemoryListener'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_cleanup_protected_items'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utf8_to_utf16_n'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5P_CLS_DATASET_CREATE_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_USHORT_g'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Dvlen_reclaim'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_get_message_component'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `MathWorks::System::Throwable::writeRecurseChain(MathWorks::System::ObjectOutput&) const'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tclose'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `MathWorks::System::init__objmgr_init(int)'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Fopen'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Pset_chunk'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `MathWorks::I18N::FromUTF16Converter::_do_conversion(char*, int) const'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Fclose'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tget_member_offset'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_NATIVE_DOUBLE_g'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_array_append'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_ghash_remove_element'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_error'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utIsWarningModeOn'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Dcreate2'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_get_message'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `init_util_basic_contexts(int)'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utGetRealMin'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `utPutFourByteInt'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `static_ref_okay'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `fl::app::init::init()'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `ut_array_get'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5T_STD_REF_OBJ_g'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `lcp_to_utf16_n'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utIsMultiByteLead'
/usr/local/matlabR2009b/bin/glnxa64/libmx.so: undefined reference to `utFdlibm_floor(double)'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `MathWorks::System::InternalException::~InternalException()'
/usr/local/matlabR2009b/bin/glnxa64/libmat.so: undefined reference to `H5Tequal'
collect2: ld returned 1 exit status
During my googling, I read something about libraries used by matlab's libraries for some other purpose, could that possibly be the problem? If so, where can I find them?
If not, does anyone have any ideas?
If you need some more information from me just let me know.

Best Answer

Did you try to compile this from Matlab per MEX command?
EDITED: Did you specify the 64 bit addressing by -largeArrayDims?
Related Question