Category Archives: C++

about c++ programming language

Swift와 C언어의 Pointer

UnsafePointer와 UnsafeMutablePointer Swift에서 C언어의 레거시 API를 사용할 때, C API가 포인터를 담고 있는 경우 Swift에서는 아래의 두 가지 경우로 함수 시그니쳐가 변환되어 임포트 됩니다. UnsafePointer<T> UnsafeMutablePointer<T> C언어의 API 에서 함수의 인자에 const가 붙은 경우 UnsafePointer<T>가 되며 const가 없는 경우 UnsafeMutablePointer<T>가 됩니다. 몇 가지 예를 들면 아래와 같습니다.

C언어에서 포인터를 선언하기 위해서 아직 정의되지 않은… Read More »

Swift와 C++ 코드 동시에 사용하기

ObjectiveC는 C언어의 Super Set이라 C코드를 자유롭게 ObjC 파일 내에서 사용할 수 있습니다. C++의 경우 m 확장자를 mm으로 변경해 주면 사용할 수 있습니다. iOS의 개발 언어가 Swift로 변경되고 나서는 C++을 사용하기 위해 약간의 수고를 더 해줘야 합니다. 안드로이드의 JNI에 비하면 아무 것도 아니지만요. 다음 순서로 하면 됩니다. C++ 모듈을 만든다 (h/cpp or hpp/cpp) ObjC++ 랩퍼를 만든다.… Read More »

JNI 문자열 – 1/3

자바의 String은 유니코드를 기반으로 한다. JNI에서 C/C++로 자바 String 객체를 다루기 위해서 인코딩에 따라 API를 지원한다.

Long 데이터 주고 받기

숫자를 전달하면 전달한 숫자의 팩토리얼을 반환한는 예제를 작성해 보자. 팩토리얼 함수를 네이티브로 작성한다.

C/C++ 에서 GLSL 코드를 쉽게 포함해 보자.

C/C++ 에서 GLSL 코드를 삽입하려면 “” 와 \n의 남발로 코드가 아래처럼 지져분해 진다.

매크로를 정의해서 아래처럼 쉽고 예쁘게 넣어보자. 물론 버전은 사용하는 GLSL 버전에 알맞게 수정한다.

Int 데이터 값 주고 받기

앞으로 몇 개의 튜토리얼을 통해서 데이터를 자바 레이어에서 네이티브 레이어로 전달하고 어떤 연산을 거친 후 되돌려 받는 예제를 작성할 것이다. 우선 Int 형을 주고 받는 예제를 작성해 보자.

메서드 등록

네이티브 라이브러리를 만들기 위해서 항상 javah로 자바의 클래스 파일을 사용해 헤더 파일을 뽑아 내야 하는 것은 아니다. 네이티브 라이브러에서 자바 클래스를 조사하여 네이티브 라이브러리를 등록할 수 있다. 이 방법을 사용하면 지저분한 패키지명+함수명을 담은 헤더 파일과 함수 이름이 필요없게 된다. 코드를 좀 더 깔끔하게 유지할 수 있다. 더 편하게 읽기 : http://skyfe79.gitbooks.io/jni-tutorial/content/chapter2.html 메서드를 등록하려면 JNI_OnLoad 함수에서 JavaVM을… Read More »

HelloJNI

맥에서 Hello JNI!를 출력하는 자바 응용프로그램을 개발해 보자. 단 이 응용프로그램은 문자열을 출력하는 부분을 C++ 로 작성할 것이다. 네이티브 라이브러를 사용하는 자바 클래스 작성하기 더 편하게 읽기 : http://skyfe79.gitbooks.io/jni-tutorial/content/chapter1.html

JNI 튜토리얼

안드로이드 NDK 프로그래밍을 하기 전에 Java와 C/C++을 잇는 JNI에 먼저 익숙해 지는 것이 먼저일 것이다. 틈나는 대로 예제 중심의 JNI 튜토리얼을 만들어 봐야 겠다. 생각나는 대로 적기에 올바른 순서는 없다. 개발환경은 MacOSX 이다.

pkg-config

라이브러리를 이용하려면 -I, -l이나 -L처럼 컴파일 옵션을 알맞게 지정해야 한다. 하지만 포함된 파일이나 라이브러리를 일일이 지정하는 일은 꽤 성가신 작업이다.