我試圖通過使用ccall
返回C的結構通過值朱莉婭
這裏C結構朱莉婭是我在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一起使用。
這裏是我的朱莉婭文件:
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
。
這工作時,我在結構中使用雙打而不是浮動,但我需要使用浮動。
謝謝。
什麼平臺和哪個版本的Julia? (可能相關) – IainDunning 2015-03-31 18:39:18
我正在使用64位Mac OS X Mavericks和Julia 0.3.7 – Zach 2015-03-31 18:39:42