¹®ÀÚ¿ÀνĽÃ۱â
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ÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°Àº¹Ì´ÏÄÚµå ÀÛ¼ºÀÚ:Àںϸâ¹ö ±è´ë¼º |