JNI에서는 C와 C++을 모두 사용 할 수 있다. 사용법이 약간 다른데, C에서는 env 구조체의 함수 포인터를 이용해 호출하고, C++에서는 env 인스턴스의 멤버 함수를 호출한다. 예를 들어 JNI의 FindClass 함수를 호출하는 예는 각각 아래와 같다. C의 경우 jclass jklass = (*env)->FindClass(env, "java/lang/Integer"); C에서는 함수 포인터를 호출한다. 함수의 첫번째 인자에는 JNIEnv 타입의 변수를 설정하고, 두 번째 부터는 함수에 필요한 인자를 적는다. C++의 경우 jclass jklass = env->Findlass("java/lang/Integer"); C++은 env 인스턴스의 멤버 함수를 호출한다. C처럼 env 구조체를 인자로..
타입 선언 자바에서 건네받은 변수를 C/C++에서 사용할 때, 자바에서 선언한 변수 타입에 따라 C/C++에서 변수를 사용하는 방법이 달라진다. 일반적으로 Java에서 사용하는 원시타입 앞에 j 를 붙이며, 배열의 경우 뒤에 Array를 붙인다. Java JNI(C/C++) JNI(C/C++ 배열) boolean jboolean jbooleanArray byte jbyte jbyteArray char jchar jcharArray short jshort jshortArray int jint jintArray long jlong jlongArray float jfloat jfloatArray double jdouble jdoubleArray object jobject jobjectArray void voi..
Android JNI와 NDK 라는 말을 들어봤을 것이다. 나는 이 둘을 대충 안드로이드에서 JAVA가 아닌 C/C++로 개발 할 때 필요한 방법? 쯤으로 알고 있었다. 하지만 그 둘의 정확한 차이가 무엇인지는 정확히 알지 못했다. 일단 용어 설명부터 하자면 JNI Java Native Interface의 약자. 자바에서 C/C++의 함수를 호출하거나, 반대로 C/C++에서 자바의 클래스와 메소드를 사용할 수 있게 해주는 인터페이스. 참고로 이게 Android를 위해 있는게 아니고 기본 Java에도 있음. 책방에 갔다가 1997년에 나온 JNI책을 보고 깜짝 놀란 기억이... NDK Android SDK 와 같은 개발 키트임. SDK가 Software Development Kit 이듯이, NDK는 Nat..
Synergy 최신 버전은 1.4.18이지만, 이것저것 써본 결과 1.4.10이 그나마 안정화 돼있는 듯 보인다. 문제는 이따금 먹통이 될때가 있는데, 나의 경우는 안드로이드의 ADB를 사용하려는 경우 Synergy와 충돌 나는 경우를 종종 겪었다. (Synergy 서비스가 도는 중, ADB를 사용하면 Synergy가 먹통이 되는 경우가 잦았다.) 이는 cmd에서 netstat -an을 해보면, 5037 포트를 무지막지하게 open한 것으로 확인 가능하다. 여튼.. 이 경우 Synergy 를 다시 실행하려 하면 이런 저런 메세지를 띄우면서 정상 동작을 안하는 경우가 많았다. - Synergy unable to open screen - Failed to init synrgyhk.dll, another pr..
Ubuntu 12.04까지는 lightDM을 사용하여 Synergy 를 시작 프로그램으로 등록하는게 됐었는데.. 14.04 에서는 우째 잘 안되더라. 겨우 등록하려고 하니 'system tray is unvailable quitting' 이라는 에러메뉴가 뜨면서 진행이 안됐음. 그래서 그냥 Startup applications 에 등록을 했더니, 글쎄 마우스 커서가 사라지는 버그가 있더라. 해당 버그는 gsettings를 이용하여 수정 가능하다. 즉, Ubuntu의 Startup Applications에서 1. (클라이언트의 경우) synergyc 등록 2. (서버의 경우) synergys 등록 3. 사라진 마우스를 보이게 하기 위하여 gsettings set org.gnome.settings-daemo..
삼성소프트웨어멤버십 하던 시절에 진행했던 유니코드의 다양한 이해 세미나
http://robowiki.net/wiki/Robocode/Developers_Guide_for_building_Robocode 로보코드의 '로봇'을 만드는 것이 아닌 '로보코드 툴'을 빌드 하기 위한 과정을 여기서 소개한다.위 가이드 대로 따라하면 좋을것 같지만 실제로 따라해보면 여러가지 난관에 부딪힌다이것이 Proxy 때문인지는 모르겠지만, 여튼 제한된 환경에서 빌드한 과정을 소개해 보도록 하겠다. 가장 중요한 것인 '빌드 환경'(내 환경이 64bit이므로 이것을 기준으로 설명)Java6 jdk(jdk-6u45-windows-x64.exe)Maven2(apache-maven-2.2.1 사용) 웃긴게 Maven3을 쓰면 빌드가 안되더라.. 정확히 원인은 모르겠지만 codesize1.1을 maven r..
- Total
- Today
- Yesterday
- C
- AWS
- source
- Python
- db
- NDK
- linux
- MFC
- C++
- android
- java
- API
- driver
- algorithm
- kering
- 음악
- 안드로이드
- 리눅스
- 프로그래밍
- jni강좌
- it
- Troubleshooting
- gcc
- Quiz
- Visual C++
- jni
- database
- winapi
- 드라이버
- Cloud
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |