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

5 次查看(过去 30 天)
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

采纳的回答

Rik
Rik 2023-6-30
移动:Rik 2023-7-1
If you're eligible for the prerelease you could give R2023b-prerelease a try, since that is native ARM.
  8 个评论
Darral Freund
Darral Freund 2023-6-30
移动:Rik 2023-7-1
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!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Introduction to Installation and Licensing 的更多信息

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by