Modelica 将字符串数组作为输入传递到外部C函数
我想将字符串向量传递到外部C函数中 在一个简单的例子中,我只想通过C函数传递字符串向量(或1D数组) 我的Modelica函数如下所示:Modelica 将字符串数组作为输入传递到外部C函数,modelica,Modelica,我想将字符串向量传递到外部C函数中 在一个简单的例子中,我只想通过C函数传递字符串向量(或1D数组) 我的Modelica函数如下所示: function testreadstri input String instri[2]; output String outstri[2]; external "C" test_stri(instri,, size(instri, 1), outstri); annotation (Include="#include <ebcmysql.cpp
function testreadstri
input String instri[2];
output String outstri[2];
external "C" test_stri(instri,, size(instri, 1), outstri);
annotation (Include="#include <ebcmysql.cpp>", Library="libmysql");
end testreadstri;
void test_stri(const char* thestring, size_t nLines, const char **testresult)
{
//bout = 12.3;
size_t iLines;
//size_t nLines;
iLines = 0;
//nLines = 1;
while ( iLines <= nLines ) {
<LINE_OF_INTEREST>
iLines++;
}
}
函数testreadstri
输入字符串instri[2];
输出字符串outstri[2];
外部“C”测试线(instri,,尺寸(instri,1),outstri);
注释(Include=“#Include”,Library=“libmysql”);
结束testreadstri;
我的功能看起来像:
function testreadstri
input String instri[2];
output String outstri[2];
external "C" test_stri(instri,, size(instri, 1), outstri);
annotation (Include="#include <ebcmysql.cpp>", Library="libmysql");
end testreadstri;
void test_stri(const char* thestring, size_t nLines, const char **testresult)
{
//bout = 12.3;
size_t iLines;
//size_t nLines;
iLines = 0;
//nLines = 1;
while ( iLines <= nLines ) {
<LINE_OF_INTEREST>
iLines++;
}
}
void test\u stri(常量字符*字符串、大小线、常量字符**testresult)
{
//布特=12.3;
尺寸线;
//尺寸线;
线性=0;
//nLines=1;
(iLines是,这是由Modelica规范支持的,请参见。是,这是由Modelica规范支持的,请参见。这里演示了Modelica中纯外部函数的输入字符串和输出字符串处理
model Model
function testreadstri
input String instri[2];
output String outstri[2];
external "C" test_stri(instri, size(instri, 1), outstri, size(outstri, 1));
annotation(Include="
#include \"ModelicaUtilities.h\"
#include <stdlib.h>
#include <string.h>
void test_stri(const char** thestring, size_t nLinesIn, const char** testresult, size_t nLinesOut)
{
size_t iLines;
// example for input string handling
for (iLines = 0; iLines < nLinesIn; iLines++) {
ModelicaFormatMessage(\"%s\\n\", thestring[iLines]);
}
// example for output string handling
for (iLines = 0; iLines < nLinesOut; iLines++) {
char* line = ModelicaAllocateStringWithErrorReturn(6);
if (line != NULL) {
strcpy(line, \"result\");
testresult[iLines] = line;
}
}
}");
end testreadstri;
String s[:] = testreadstri({"first", "second"});
end Model;
模型
函数testreadstri
输入字符串instri[2];
输出字符串outstri[2];
外部“C”测试(instri,尺寸(instri,1),outstri,尺寸(outstri,1));
注释(包括=”
#包括\“ModelicaUtilities.h \”
#包括
#包括
无效测试(常量字符**字符串,大小线,常量字符**测试结果,大小线)
{
尺寸线;
//输入字符串处理示例
对于(iLines=0;iLines
下面是一个演示Modelica中纯外部函数的输入字符串和输出字符串处理的示例
model Model
function testreadstri
input String instri[2];
output String outstri[2];
external "C" test_stri(instri, size(instri, 1), outstri, size(outstri, 1));
annotation(Include="
#include \"ModelicaUtilities.h\"
#include <stdlib.h>
#include <string.h>
void test_stri(const char** thestring, size_t nLinesIn, const char** testresult, size_t nLinesOut)
{
size_t iLines;
// example for input string handling
for (iLines = 0; iLines < nLinesIn; iLines++) {
ModelicaFormatMessage(\"%s\\n\", thestring[iLines]);
}
// example for output string handling
for (iLines = 0; iLines < nLinesOut; iLines++) {
char* line = ModelicaAllocateStringWithErrorReturn(6);
if (line != NULL) {
strcpy(line, \"result\");
testresult[iLines] = line;
}
}
}");
end testreadstri;
String s[:] = testreadstri({"first", "second"});
end Model;
模型
函数testreadstri
输入字符串instri[2];
输出字符串outstri[2];
外部“C”测试(instri,尺寸(instri,1),outstri,尺寸(outstri,1));
注释(包括=”
#包括\“ModelicaUtilities.h \”
#包括
#包括
无效测试(常量字符**字符串,大小线,常量字符**测试结果,大小线)
{
尺寸线;
//输入字符串处理示例
对于(iLines=0;iLines
谢谢,@tbeu,我知道Modelica规范中的这一部分。但是我如何才能处理字符串(或更正确的字符数组),然后再处理C函数?这可能是一个问题,因为我的C技能太差了……谢谢,@tbeu,我知道Modelica规范中的这一部分。但是我如何处理字符串呢(或更正确的字符数组)然后在C函数中?这可能是一个问题,因为我的C技能太差了。。。