gpt4 book ai didi

c - 按值将 C 结构返回给 Julia

转载 作者:太空狗 更新时间:2023-10-29 17:20:32 25 4
gpt4 key购买 nike

我正在尝试使用 ccall

将 C 结构传递给 Julia

这是我在 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;
}

然后我将其编译成共享库以与 Julia 一起使用。

这是我的 Julia 文件:

immutable TestStruct
a::Cfloat
b::Cfloat
end

struct = ccall((:getStruct, "libteststruct"), TestStruct, ())
println("Got struct a: ", struct.a, " b: ", struct.b)

当我运行这个文件时,我希望得到

Created struct a: 3.000000 b: 5.000000
Got struct a: 3.0 b: 5.0

然而,我却得到了

Created struct a: 3.000000 b: 5.000000
Got struct a: 3.0 b: 0.0

a 始终正确,但 b 始终为 0

当我在结构中使用 double 而不是 float 时,这会起作用,但我需要使用 float 。

谢谢。

最佳答案

这对我来说在 Julia master (0.4-dev) 上运行良好——在 Windows 上启动。完整的按值结构支持最近才出现 merged into master .它可能看起来(有点)在 0.3 上工作,但没有得到官方支持,可能应该是一个错误。

关于c - 按值将 C 结构返回给 Julia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29375433/

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