반응형
Androi NDK를 이용한 C++ 라이브러리 char 형 문제 해결 signed char 와 unsigned char 형에 대한 지정 - Android Studio
오늘 Androi NDK를 이용한 C++ 라이브러리를 작업 하다가 char 형에 대한 문제가 발생 했다.
gcc / visual studio 모두 char의 기본 값은 singed char형이다.
그러나 Android NDK에서는 char의 기본 값이 unsigned char형이라고 한다.
즉, 마이너스(-) 값이 없이 최소 값이 0이라는 점.
이런 차이 때문에 데이터를 카피 해서 사용 할 때 문제가 발생 할 수 있다.
그렇다고 소스의 모든 char 선언을 signed char로 바꿀 수도 없는 노릇이다.
해결책은 간단 하다.
빌드 옵션에 -fsigned-char 를 추가 해주면 된다.
그러면 알아서 char의 기본 값을 unsigned char에서 signed char로 바꿔 준다.
Gradle Scripts -> build.grade(Module:app) 에서
externalNativeBuild {
cmake {
cFlags '-O3', '-fsigned-char'
cppFlags "-std=c++11", '-fsigned-char'
}
}
위와 같이 컴파일 옵션만 추가 해주면 된다.
참고로 build cpu 종류를 원하는 것만 지정 할 때는
ndk {
abiFilters 'armeabi-v7a', 'x86'
}
위와 같이 빌드 하길 원하는 종류를 지정 할 수 있다.
References:
< Android NDK: Using C/C++ Native Libraries to Write Android Apps >
반응형
'Programming' 카테고리의 다른 글
비쥬얼 스튜디오 다크모드 설정 하기 (0) | 2020.08.10 |
---|---|
C# DateTime Now에서 날짜만 가져 오기 (0) | 2020.07.17 |
C# List 배열 회전 시키기 - Right Rotation - Unity3D (0) | 2020.03.27 |
C# - class 객체 배열 new 할당 후 배열 요소 null 접근 문제 해결 (0) | 2020.03.14 |
C# - Enum 형의 내부 형식 변경과 유용한 메소드 - byte (0) | 2020.03.13 |