前言
关于环境和dll的生成,不懂的同学可以去查看JNA(一)与JNA(二)的内容
结构体可能比较重要,大多数Java应用与共享库的交互基本是以结构体做为桥梁,这里是结构体中包含double数组的情形
操作
1.C语言代码
头文件(library.h)
#ifndef CDYNAMICDEMO_LIBRARY_H
#define CDYNAMICDEMO_LIBRARY_H
#include <string.h>
#include <stdlib.h>
// double数组结构体
struct DoubleArrayStruct {
int size;
double *arr;
};
double sumDoubleArray(const struct DoubleArrayStruct *arrayStruct);
struct DoubleArrayStruct getDoubleArray();
void cleanDoubleArray(double *arr);
#endif //CDYNAMICDEMO_LIBRARY_H
代码文件(library.c)
#include "library.h"
#include <stdio.h>
double sumDoubleArray(const struct DoubleArrayStruct *arrayStruct) {
if (NULL == arrayStruct || arrayStruct->size == 0) {
printf("\nnull return.");
return 0;
}
double sum = 0;
for (int i = 0; i < arrayStruct->size

本文详细介绍了如何在C语言中处理带有double数组的结构体,并展示了如何在Java中通过JNA调用C库函数,以及使用偏移访问结构体成员。
最低0.47元/天 解锁文章
7764

被折叠的 条评论
为什么被折叠?



