¼Ò¼³ java.jni ¼Ò½ºÄڵ堠¹®ÀÚ¿­À» ¸Å°³º¯¼ö·Î Àü´Þ  ¹®ÀÚ¿­ÀνĽÃ۱⠠

¹®ÀÚ¿­ÀνĽÃ۱â

MessageType.java

public class MessageType {
  
static 
{
    System.loadLibrary(
"message"
);
  }  
  
public native 
String printMessage(String str);  
  
public static void main(String[] args)  throws 
Exception {
    MessageType h = 
new 
MessageType();
    System.out.println(h.printMessage(
"Type anything? : "
));
  }
}

C:\20>javac MessageType.java
C:\20>javah MessageType

MessageType.c

#include <jni.h>
#include 
"MessageType.h"
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_MessageType_printMessage(JNIEnv* env, jobject obj, jstring msg) {
  
char buf[128
];
  
const char *str = (*env)->GetStringUTFChars(env, msg, 0
);
  printf(
"%s"
, str);
  (*env)->ReleaseStringUTFChars(env, msg, str);
  scanf(
"%s"
, buf);
  
return 
(*env)->NewStringUTF(env, buf);
}

C\20>cl -Ic:\jdk1.3.1\include -Ic:\jdk1.3.1\include\win32 -LD MessageType.c -Femessage.dll
MessageType.c
/dll
/implib:message.lib
/out:message.dll
MessageType.obj
   Creating library message.lib and object message.exp
C:\20>java MessageType
Type anything? : http://www.jabook.org
http://www.jabook.org

ÀÚ¹ÙÀÇ 16ºñÆ® À¯´ÏÄڵ堹®ÀÚ¿­°ú C¾ð¾îÀÇ 8ºñÆ®¹®ÀÚ¿­À» ¼­·Î ¼ÒÅëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ±â À§ÇØ JNI¿¡¼­´Â UTF-8Æ÷¸äÀ» »ç¿ëÇÕ´Ï´Ù. ¹®ÀÚ¿­À» º¯°æÇÒ ¶§ GetStringUTFChars()¸¦ »ç¿ëÇÏ°í º¯°æÀÌ ³¡³ª¸é ReleaseStringUTFChars()¸¦ »ç¿ëÇÏ¿© JVM¿¡°Ô ¸Þ¸ð¸®ÀÇ ÀÚ¿øÀ» ÇØÁö½Ã۶ó°í ¸í·ÉÇÕ´Ï´Ù. NewStringUTF()´Â C¾ð¾î·Î ÀԷ¹ÞÀº ¹®ÀÚ¿­À» ÀÚ¹ÙÀÇ À¯´ÏÄڵ幮ÀÚ¿­·Î º¯È¯Çϰí ÀÖ½À´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°Àº¹Ì´ÏÄÚµå
ÀÛ¼ºÀÚ:Àںϸâ¹ö ±è´ë¼º