我在将包含静态数组的 D 结构传递给 C 时遇到问题。
D 代码:
extern (C){
struct vec3f{
float[3] array;
}
void testVec3f(vec3f v);
}
...
void test(){
float[3] ar = [1f,2f,3f];
vec3f v = vec3f(ar);
testVec3f(v);
}
C代码:
extern "C" struct vec3f{
float array[3];
};
extern "C" void testVec3f(vec3f a){
printf("x=%f, y=%f, z=%f\n", a.array[0], a.array[1], a.array[2]);
}
结果:x=0.000000,y=0.000000,z=0.000000。我还检查了 D 和 C 中的两个结构具有相同的大小 - 12 个字节。