안드로이드 개발 질문/답변
(글 수 45,052)
#include <stdio.h>
#include <string.h>
#include "native.h"
extern int main(int argc, char *args[]);
const int getArrayLen(JNIEnv * env, jobjectArray jarray)
{
return env->GetArrayLength(jarray);
}
JNIEXPORT void JNICALL Java_com_app_test_native_main
(JNIEnv * env, jobject cls, jobjectArray jargv)
{
jsize clen = getArrayLen(env, jargv);
char * args[(int)clen];
int i;
jstring jrow;
for (i = 1; i < clen; i++)
{
jrow = (jstring)env->GetObjectArrayElement(jargv, i);
const char *row = env->GetStringUTFChars(jrow, 0);
args[i] = malloc( strlen(row) + 1);
strcpy (args[i], row);
env->ReleaseStringUTFChars(jrow, row);
}
main(clen, args);
}
C++ 소스구요 so 파일을 만들려고
sigwin에서 ndk-build 했을때
27: error: invalid conversion from 'void*' to 'char*' 와 같은 에러메시지가 뜨네요..
27줄이면 args[i] = malloc( strlen(row) + 1); 이부분인데
저는 main.cpp 에 있는 int main(const int argc, const char *args[]) 를 호출하려고 합니다.




malloc( strlen(row) + 1); ==> (char*)malloc( strlen(row) + 1);
로 형변환 해주면 해결될 것 같네요 ㅎ