我怎么能一个常数C字符串传递给一个函数生成的代码中嵌入MATLAB实时车间5.1嵌入式编码器(R2008a) ?

20视图(30天)
在嵌入式MATLAB函数,我可以用EML.CEVAL调用自定义的C函数。
我通过一个字符串作为参数,生成的代码使用一个指针指向一个字符数组。我想通过实际的字符串。
例如,当生成C代码:
eml.ceval (“MyCExternalFunction”__arg1, (“就是”char (0)));
我得到:
MyCExternalFunction (__arg1、tmp)
tmp在哪一个指向“MyString”
我想要:
MyCExternalFunction (__arg1、“就是”)

接受的答案

MathWorks支万博1manbetx持团队
当使用字符串在嵌入式MATLAB,有件重要的是要知道:一分之一
“MyString”在MATLAB和C”就是“不是等价的。在C语言中,字符串是空结束,而在MATLAB我们对待他们是字符数组(没有null-termination)。因此,它是不正确的
”就是“一个C函数,假定它被当作一个“MyString”C。
因此,正确的代码
eml.ceval (“MyCExternalFunction”__arg1,“就是”);
应该是:
eml.ceval (“MyCExternalFunction”__arg1, (“就是”0]);
然后,为了通过一个常数C字符串定义的C函数,可以使用EML之一。不透明的指令。例如,EML。CEVAL电话就变成:
eml.ceval (“MyCExternalFunction”__arg1 eml.opaque (‘const char *’,”“就是”));
这只会“胶水”“MyString”不断在生成的代码中:
MyCExternalFunction (__arg1、“就是”);
注意:请参考相关解决方案1-7K299R以null结尾C字符串。
2的评论
Arjun Khadse
Arjun Khadse 2023年3月6日
你好,崔,
请联系MathWorks技术支持,这样我们可以帮助你了解这个问题。万博1manbetx谢谢你!

登录置评。

更多的答案(0)

s manbetx 845


释放

R2008a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的