有没有办法从Fortran声明C可变参数函数? 我需要调用此函数来计算用字符串标记的向量之间的点积。 我的想法是声明如下所示,其中变量列表包含字符串文字。如果参数的变量列表为空,那么我将在标准标签中进行查找并执行计算。如果用户指定两个标签,我想找回这两个向量,并得到他们的点积:C可变参数函数和Fortran的互操作性
extern "C" void compute_dot_product(double * dot_product, ...)
{
va_list args;
va_start(args, NULL);
char * label1 = va_arg(args, char *);
if (!label1)
{
// Do standard label lookup and compute dot product
}
else
{
// Compute dot product between the vectors with the specified labels
char * label2 = va_arg(args, char *);
}
va_end(args);
}
唯一的问题是,我可以编译我的C库,并将其链接到一个Fortran可执行文件,但我得到一个运行时错误当我尝试访问变量列表的参数。 任何想法,如果我想要做什么是可能的? 然后,可能的解决方案是将其分解为两个函数:一个执行标准标签查找(0参数大小写),另一个处理非标准标签查找(2个参数大小写)。我宁愿避免这个解决方案。
它需要在两边声明为cdecl。你的运行时错误可能是因为一方是stdcall而另一方是cdecl。 – cup