안녕하세요 이번에 안드로이드 프로젝트를 맞게되서 프로그램 만들고있는놈입니다...
다름아니라, 같은 내용의 프로젝트를 mfc(마이크로소프트 c++ 라이브러리)로 짜둔 알고리즘이있습니다 알고리즘 부분은 mfc함수를 안써서 ansi표준으로만 짜뒀습니다.
그런데 안드로이드에 같은 알고리즘을 넣어야하는경우가생겨서 자바로 다시짜기 귀찮고.... 오래걸리기도하고.. 빨리만들어달라고위에서 말핫서.....
아직 해본적은 없지만 android ndk로 개발하기로 생각했습니다 설정 방법은 리눅스 make파일 만드는거랑 유사하고 구조도 대충 비슷해 쉽게Android.mk까지 만들었습니다.
중요한건 jni문법과 사용할수 없는 함수들이더군요....
그중 지금 걸리는 문제인 1번째는
#include <cstring>
#include <malloc.h>
#define LOGFILE_MAX_ROW 1440
#define STATE_UNCOLLECTIBLE 0
#define STATE_OFF 1
#define STATE_SLEEP 2
#define STATE_ACTIVITY 3
#define THRESHOLD_OFF 1
#define THRESHOLD_SLEEP 8
#define THRESHOLD_SLEEPACTIVITY_DEVISION 25
#define INITIAL_INTENSITY 25
#define SLEEP_STAGE_OFF 0
#define SLEEP_STAGE_DEEP 1
#define SLEEP_STAGE_LIGHT 2
#define SLEEP_STAGE_REM 3
#define SLEEP_STAGE_WAKE 4
inline size_t sizeof_malloc(void* p)
{
#if _MSC_VER
return _msize(p);
#else
#if __GNUC__
return malloc_usable_size(p);
#else
#if __APPLE__
return malloc_good_size(p);
#endif
#endif
#endif
}
이중 gnu인식해서 리턴바뀌게 짜놓았더니malloc_usable_size를 ndk에서 사용못하는거같더군요...
검색해보니 ndk에서 2010년에 막았다고... 근데 그에대한 해결방법이 없는거같습니다. 혹시 동적사이즈를 찾는방법이 있을까요???
2번쨰는 단순 형변환 문제입니다. jni는 자바의 int와 jint가 같고 c의 int랑도 다른 놈인거까지는 알겠습니다.
하나는 자바는 빅인디언방식 jni쪽은 리틀인디언까지... 그럼 형변환 과정이 있어야할텐데 jint to int 랑같이
구글에 검색해봐도 정확한 답이안보이더군요... 대충
int a = 0;
jint i = (jint)a;
or
jint a = 0;
int i = (int)a;
이런 문법이 먹히는건가요??