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 >
Android NDK: Using C/C++ Native Libraries to Write Android Apps
What first comes to mind when you hear «Android app»? Most certainly, it’s Java or Kotlin. However, apart from Android SDK, Google also has…
expertise.jetruby.com
'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 |