gpt4 book ai didi

java - 如何使用 swig 在 C 和 Java 之间传递包含数组的结构体?

转载 作者:行者123 更新时间:2023-11-30 17:30:23 25 4
gpt4 key购买 nike

我对 Swig 有一些办法,但上面的问题对我来说是一个阻碍。我有一个相当复杂的结构,其中包含我的应用程序数据,我需要在 ndroid NDK 中的 C 代码和顶层应用程序的 Java 代码之间传递它。

结构如下:

typedef struct
{
uint16_t x1;
char s1[4][16];
char s2[4][16];
char s3[4][16];
uint32_t x2[4];
} MY_STRUCT;

它显然具有多维数组和结构类型的邪恶组合,我尝试了一些方法,但没有任何效果。

我需要能够在 Java 和 C 代码中设置和获取数组中的值,谁能告诉我实现此目标应遵循的一般策略?

谢谢

最佳答案

您可能应该构建一组访问器:

%inline %{
void MY_STRUCT_x1_set(struct MY_STRUCT *obj, uint_16 val) {
obj->x1 = val;
}
void MY_STRUCT_s1_set(struct MY_STRUCT *obj, int i, int j, char val) {
obj->s1[i][j] = val;
}
char MY_STRUCT_s2_get(struct MY_STRUCT *obj, int i, int j) {
return obj->s2[i][j];
}
%}

...等等。这样您就可以从 Java(通过生成的包装器)完全访问您的结构。

请注意,SWIG 不会执行越界或可能因滥用包装器代码而违反的其他条件。

关于java - 如何使用 swig 在 C 和 Java 之间传递包含数组的结构体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25164769/

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