안녕하세요.

앱 개발을 하는데 있어서 서버측 구현을 하다가

JNI 때문에 질문을 드립니다.


JNI를 사용함에 있어서 ms의 stdio.h를 사용하는데요.

printf를 사용해보니 순서가 너무 뒤죽박죽이여서 어떻게 해야될지를 모르겠습니다.


자바의 sysout과 C의 printf가 서로 다른 스택에서 작동되는거 같은데 어떻게 하면

정상적인 순서로 나올까요.


아래 소스도 같이 올려드립니다.



--Java소스

public class helloMain {

static HelloWorld hw = new HelloWorld();

public static void main(String[] args){

System.out.println(hw.add(45, 11));

hw.print();

System.out.println("22424");

}

}


--C소스

#include <jni.h>

#include <stdio.h>

#include "HelloWorld.h"


JNIEXPORT void JNICALL Java_HelloWorld_print (JNIEnv *env, jobject obj){

printf("Hello Worlds!!");

return;

}


JNIEXPORT jint JNICALL Java_HelloWorld_add (JNIEnv *env, jobject obj, jint a, jint b){

printf("yayayaya!");

return a+b;

}



--출력결과

56

22424

yayayaya!Hello Worlds!!




제가 이해하는 소스코드상에서는 출력결과가..


yayayaya!

56

Hello Worlds!!

22424


라는 순서로 출력되는게 맞다고 생각되어지지만..

실제로는 안그렇네요.. 



어떻게 하면 정상적인 출력구조를 가질수 있을까요?


고수님들의 지식이 필요합니다.

지나가시다가 조금이라도 아시는게 있다면

주저하지 마시고 댓글좀 써주시면 감사하겠습니다.