gpt4 book ai didi

java - 将自定义类型 Fortran 映射到 Java(使用 JNA)

转载 作者:行者123 更新时间:2023-12-01 09:51:45 25 4
gpt4 key购买 nike

我必须编写一个 Fortran 子例程的接口(interface)才能从 Java 调用。 Fortran 子例程中的一些参数是派生类型(自定义类型/结构)。是否可以用 JNA 来映射它们?到目前为止我还不清楚这是如何运作的。 JNI 怎么样?

例如像这样的子例程:

subroutine mysub(arg)
implicit none
type mytype
integer:: i
real*8 :: a(3)
end type mytype

type(mytype) arg

! do stuff...

end subroutine mysub

最佳答案

是的,JNA 通过引用和值支持聚合类型(C 中的struct)。参数的默认约定是按值,例如

public interface MyLibrary extends Library {
MyLibrary INSTANCE = (MyLibrary)Native.loadLibrary("mylib", MyLibrary.class);

class MyStruct extends Structure {
public static class ByValue extends MyStruct implements Structure.ByValue {}
public int i;
public double a[3];
protected List getFieldOrder() {
return Arrays.asList("i", "a");
}
}

void mysub(MyStruct.ByValue arg);
}

关于java - 将自定义类型 Fortran 映射到 Java(使用 JNA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37553139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com