Simulink crashes with implemeted S-function with protobuf and zeroMQ libraries

13 次查看(过去 30 天)
Hello,
I have a problem with implemetation of communication s-function including protobuf and zeroMQ through legacy_code s function creation. After loading the block cointaining the S-function the whole Matlab crashes. The same happens when I create the function again in one opened Matlab session. It looks like the protobuf library doesn't allow to be loaded multiple times.
I have tried to implement some walkarounds using mexLock() function but I can not use it in root of the function and in init, start or output function it doesn't change the behavior.
Does anyone have any experience with such behavior?
Thank you for any advice
  1 个评论
Bill Gruner
Bill Gruner 2022-8-3
编辑:Bill Gruner 2022-8-3
I've run into a similar issue, Lukas, and found out that MATLAB has its own, special version of protobuf3 with no documentation and no (useful) version info. This special version conflicts with the standard version we're running and MATLAB just errors out if we try to call one of the standard protobuf3 methods. It's possible the method doesn't even exist in their special version. The only workaround we've come up with so far is to comment out the line with protobuf3 on it in classpath.txt, e.g.:
.
.
.
$matlabroot/java/jarext/lucene-queries.jar
$matlabroot/java/jarext/lucene-core.jar
$matlabroot/java/jar/ja_JP/mw_java_help_ui_res.jar
# $matlabroot/java/jarext/protobuf3.jar
$matlabroot/java/jar/toolbox/compiler_mdwas.jar
$matlabroot/java/jar/path_api.jar
$matlabroot/java/jarext/lucene-highlighter.jar
.
.
.
and then restart MATLAB and load our standard version as part of a JAR-with-dependencies. You can find your classpath.txt by running:
which classpath.txt
It's a pretty terrible solution, especially if you're going to deploy your code to someone else's computer, but it seems to be all Mathworks has left us with. Good luck!

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Naming Conventions 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by