Programming

Androi NDK를 이용한 C++ 라이브러리 char 형 문제 해결 signed char 와 unsigned char 형에 대한 지정 - Android Studio

DragonTory 2020. 5. 27. 15:32
반응형

 

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 >

https://expertise.jetruby.com/android-ndk-using-c-c-native-libraries-to-write-android-apps-21550cdd86a

 

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

 

 

반응형