How Can I MEX a dynamic library (libraw) with my own C++ code on an M2 Mac?

7 visualizzazioni (ultimi 30 giorni)
I have existing C++ code compiled with Clang++ that uses libraw on my M2 Mac. But the dynamic libraries are arm64 and won’t work when I try to use the dynamic library with MEX. I get the following error message:
Error using mex
ld: warning: ignoring file /usr/local/lib/libraw.dylib, building for macOS-x86_64 but attempting to link with file built for
macOS-arm64
Undefined symbols for architecture x86_64:
"LibRaw::LibRaw(unsigned int)", referenced from:
MexFunction::operator()(matlab::mex::MexIORange<std::__1::__wrap_iter<matlab::data::Array*>>,
matlab::mex::MexIORange<std::__1::__wrap_iter<matlab::data::Array*>>) in rawtest4.o
and more…
I wasn’t able to figure out how to create the x86_64 libraries on my M2, so I used an Intel Mac and created the dynamic libraries on it. I then copied them to the M2 and tried again, but got this message:
ld: warning: ignoring file /Users/darral/MATLAB-Drive/libraw_darral/lib/libraw.dylib, building for macOS-x86_64 but attempting
to link with file built for unknown-unsupported file format ( 0x62 0x6F 0x6F 0x6B 0x00 0x00 0x00 0x00 0x6D 0x61 0x72 0x6B 0x00
0x00 0x00 0x00 )
Undefined symbols for architecture x86_64:
"LibRaw::LibRaw(unsigned int)", referenced from:
MexFunction::operator()(matlab::mex::MexIORange<std::__1::__wrap_iter<matlab::data::Array*>>,
matlab::mex::MexIORange<std::__1::__wrap_iter<matlab::data::Array*>>) in rawtest4.o
and more….
Can anyone advise me if there is a way to do this and how I might go about it?
Thanks

Risposta accettata

Rik
Rik il 30 Giu 2023
Spostato: Rik il 1 Lug 2023
If you're eligible for the prerelease you could give R2023b-prerelease a try, since that is native ARM.
  8 Commenti
Darral Freund
Darral Freund il 30 Giu 2023
Spostato: Rik il 1 Lug 2023
Thanks again. I installed the JRE and the 2023b pre release and the mex function successfully compiled my code and linked the dynamic libraries. This is a great solution!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Introduction to Installation and Licensing in Help Center e File Exchange

Prodotti


Release

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by