4
#include <stdio.h>
#include "Package_MyTester.h"

jstring Java_Package_MyTester_NMethod
 (JNIEnv *env, jobject obj, jint first, jint second) {
  jint result_i = first * second;
  jstring result;
  int x = 0;
  for(x=0;x<5;x++) {
      printf("%d",x);
  }

  return result;      
}

このプログラムは2つのジントを乗算します。結果はjstringである必要があります。jintをjstringに変換する方法はありますか?

4

1 に答える 1

6

結果を含む C バッファを ( を使用して) 作成し、関数sprintfの結果を返す必要があります。NewStringUTF

jstring Java_Package_MyTester_NMethod
 (JNIEnv *env, jobject obj, jint first, jint second) {
  jint result_i = first * second;
  char buf[64]; // assumed large enough to cope with result

  sprintf(buf, "%d", result_i);  // error checking omitted

  return (*env)->NewStringUTF(env, buf);      
}

http://java.sun.com/docs/books/jni/html/objtypes.htmlの §3.2.3 を参照してください。

于 2012-05-08T09:03:46.283 に答える