我正在尝试将C结构传递给Julia ccall
这是我在C中的文件:
#include <stdio.h>
typedef struct {
float a;
float b;
} TestStruct;
TestStruct getStruct() {
TestStruct s = {3.0f, 5.0f};
printf("Created struct a: %f b: %f\n", s.a, s.b);
return s;
}
Run Code Online (Sandbox Code Playgroud)
然后我将其编译成一个与Julia一起使用的共享库.
这是我的Julia文件:
immutable TestStruct
a::Cfloat
b::Cfloat
end
struct = ccall((:getStruct, "libteststruct"), TestStruct, ())
println("Got struct a: ", struct.a, " b: ", struct.b)
Run Code Online (Sandbox Code Playgroud)
当我运行这个文件时,我希望得到
Created struct a: 3.000000 b: 5.000000
Got struct a: 3.0 b: 5.0
Run Code Online (Sandbox Code Playgroud)
但是,我反而得到了
Created struct a: 3.000000 b: 5.000000
Got struct a: 3.0 b: …Run Code Online (Sandbox Code Playgroud)