私はこのエラーを取得:Cでjniを使用したCメソッドの型の競合?
conflicting types for ‘Java_model_JNIResultSet_getSpieler’
Java_model_JNIResultSet_getSpieler() {
^
In file included from SharedTable.c:5:0:
model_JNIResultSet.h:15:32: note: previous declaration of ‘Java_model_JNIResultSet_getSpieler’ was here
JNIEXPORT jobjectArray JNICALL Java_model_JNIResultSet_getSpieler
^
私のコードは次のようになります。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jni.h>
#include "model_JNIResultSet.h"
struct Spieler {
char vorname[50];
char nachname[50];
int trikotnummer;
struct Spieler *next;
};
struct Spieler *head = NULL;
struct Spieler *current = NULL;
JNIEXPORT struct Spieler* JNICALL
Java_model_JNIResultSet_getSpieler() {
int c;
int count = 0;
FILE *file;
char myStrings[MAXCHARS];
file = fopen("Spieler.txt", "r");
if (file) {
while ((c = getc(file)) != EOF) {
myStrings[count] = c;
count++;
}
fclose(file);
}
int len = strlen(myStrings);
int j = 0;
int attributeCount = 1;
char newArray[MAXCHARS];
for (c = 0; c < len - 1; c++) {
if (myStrings[c] != '\n') {
newArray[j] = myStrings[c];
j++;
} else {
j = 0;
if (attributeCount == 4) {
attributeCount = 1;
}
//newArray[strlen(newArray)+1] = '\0';
insertFirst(newArray, attributeCount);
attributeCount++;
memset(newArray, 0, sizeof(newArray));
}
}
// reverse the data
reverse(&head);
return head;
}
ここでエラー何ができますか?私は全く考えていないし、長い間探してきたが、私はそれを修正する方法を知らない。
.hファイルのprevious declaration
は何ですか?事前に
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class model_JNIResultSet */
#ifndef _Included_model_JNIResultSet
#define _Included_model_JNIResultSet
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: model_JNIResultSet
* Method: getSpieler
* Signature:()[Lmodel/Spieler;
*/
JNIEXPORT jobjectArray JNICALL Java_model_JNIResultSet_getSpieler
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
ありがとう:ここ
は.hファイルです!
リンクされたリストを返すには、 'jlong'を返すのが最善の方法ですか? – mafioso
申し訳ありませんが、あなたの意図がモデルの配列を返すことを実現していると私のコメントを更新しました.Spielerオブジェクト。 Java側からのポインタを使用すると、とにかく不満の練習になります。 – yano