Call engOpen in C code, launch functionnal matlab engine but hangs on C process
조회 수: 14 (최근 30일)
이전 댓글 표시
Hello, I'm testing matlab engine library with engdemo.c exemple.
Compiling the code directly with gcc:
$ export LD_LIBRARY_PATH="matlabroot/bin/glnxa64"
$ mv matlabroot/sys/os/glnxa64/libstdc++.so.6 matlabroot/sys/os/glnxa64/libstdc++.so.6.old (get rid of the clunky matlabroot/sys/os/glnxa64/libstdc++.so.6 in a dirty way and use /usr/lib/x86_64-linux-gnu/libstdc++.so.6 instead)
$ gcc -o engdemo -L matlabroot/bin/glnxa64 -lmx -leng -lm -lmex -lmat engdemo.c -Imatlabroot/extern/include
But when I run the executable, it calls engOpen(), launch a matlab command window but then hang inside the function. If I manually quit the matlab command window engOpen release the process but return NULL.
Thanks for your help!
EDIT: explicit "get rid of the clunky matlabroot/sys/os/glnxa64/libstdc++.so.6 in a dirty way and use /usr/lib/x86_64-linux-gnu/libstdc++.so.6 instead" sentence with the command used.
댓글 수: 4
Yongjian Feng
2021년 12월 9일
Again, not a good idea. You renamed the libstdc++ shipped with matlab to force the process to use the system libstdc++. This will force matlab to use that lib as well. It can cause trouble.
채택된 답변
추가 답변 (1개)
Douglas
2024년 5월 1일
I had a similar problem on MatLab R2024a running on Fedora 40, linux kernel 6.8.7. My c program would stuck on engOpen() call and would not recover.
I could find the solution using
strace -f ./myprogram
This showed that to use MatLab Engine you need to install the csh package. On fedora it's simple as:
sudo dnf install tcsh
I find the documentation should have this package as a dependency since not all linux comes with csh preinstalled.
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!