2012-12-07 3 views
-2

코드 :구조 포인터를 Java에서 반환 형식으로 C에서 네이티브 메서드를 선언하려면 어떻게해야합니까? C에서

typedef struct{ 

int a; 

int b; 

}NODE; 

NODE *node; 

NODE* add(int c){ 

node->a=node->a+10; 

c=node->a+node->b; 

node->a=c; 

return node; 

} 

어떻게 내 기본 기능 JNI를 사용하여 Java에 반환 형식으로 구조체 포인터와 함께 "추가"를 선언합니까?

+0

질문에 대해서는 모르겠지만이 코드를 컴파일하려고 했습니까? –

+0

동일한 코드는 아니지만 유사합니다. – sk89

답변

1

Java 응용 프로그램이 구조, 포인터 또는 네이티브 코드에서 반환 된 구조에 대한 포인터를 의미있게 처리 할 수 ​​없습니다. 따라서 JNI는 이것을 허용하지 않습니다.

그러나, 당신은 다음과 같은 기본 방법을 정의 할 수 있습니다 단순히 자바로 건네하지만 지금까지 네이티브 코드에서 처리 불투명 한 핸들로 구조화하는 포인터를 치료하려면 :

public native int add(); 

또는를

public native long add(); 

네이티브 코드가 32 비트 또는 64 비트 포인터를 사용하는지 여부에 따라 달라질 수 있습니다. 네이티브 코드는 반환하기 전에 포인터에서 jint 또는 jlong으로 적절하게 캐스팅해야합니다.

+0

고마워요. ..i는 그것을 알아 냈습니다. – sk89

관련 문제