안드로이드 NDK R4 일리히트 연동하기

|
기존에 올린 강좌가 NDK R1으로 되어 있던거라서 최신버전 R4에서는 실행이 되지않는 다는 문의가 많이 들어와서
관련 프로잭트 파일을 통체로 올려드립니다.

R4기준이므로 다른 버전에서는 동작을 보장하지못합니다.

R4부터는 빌드 시스템이 바껴서 시그윈으로 해당프로잭트에가서 ndk-bulid만 치시면 빌드가 됩니다.

그래서 컴파일하는 방법은 간단하게....

anrl_exam1.zip

압축을 푸신 디랙토리에서 ndk-bulid만 하면됩니다.


위의 리소스는 mmt/sdcard에 넣고 실행시키면 다음과 같이 ㅡ.ㅡ;;;


안드로이드용 일리히트엔진 풀소스는 여기에 있습니다.






And

C#으로 네이티브 코드 접근하기 part 3. 네이티브클래스 랩퍼

|
이전 강좌에서 만들었던 CTest클래스를 그대로 사용하겠습니다.

매나지드c++로 랩퍼 DLL을 만들어서 이것을 우회적으로 경유하여 네이티브코드와 매나지드코드를 붙이는 방법입니다.

먼저 프로잭트 세팅을 다음과 같이 해줍니다.



기본적으로 매나지드 코드이기 때문에 네이티브 c++쪽 선언정보를 다음과 같이 #pragma unmanaged 키워드로 감싸서 표기 합니다.



이렇게 하면 매나지드 c++코드에서 네이티브 코드를 혼용해서 사용할수 있습니다. 단점은 CLR에서는 인탤리젼트 기능이 무력화되있기때문에 약간은 좀 불편 하실수도있습니다. 그러나 비주얼 어시스트를 쓰면 됩니다. ^^;

다음은 랩퍼 클래스입니다.



CreateTest라는 함수를 먼저 보면 인스턴스를 만들어 주는 함수인데요.




네이티브 코드의 정적 함수를 호출하여 네이티브 객체를 Wrap함수에 넘겨주는 일을 합니다.

그 다음 Wrap에서는 받아온 네이티브 포인터를 매나지드 참조형( ^  이라고 표기되는... )으로 바꿔 주는 역활을 합니다.


gcnew를 써서 랩퍼 객체를 만들어 줍니다. 생성자는 인자로 네이티브포인터를 받습니다.

생성자는 아래와 같이 구현됩니다.



가장 중요한(?) 더하기 기능을해주는 함수는 아래와 같이 네이티브 코드를 원격 호출하는것으로 구현됩니다.





이렇게 만들어진 DLL은 매나지드코드와 연결이 가능한 DLL입니다. 이걸가지고 각종 .Net40 환경의 여러 언어들과 소통이 가능합니다.

C#프로잭트에 Add Reference 해주셔야합니다.
lime.dll은 매나지드 랩퍼 dll이고
testDll.dll은 순수 네이티브 dll 입니다.



C#으로 쓰는 예는 다음과 같습니다.





소스 첨부 합니다.




And

자작 나무 모델입니다.

|


일리히트엔진에 올리시려면 .DAE 파일로 올리시면 됩니다.

메트리얼 속성을 다음과같이 세팅하면 나무가 제데로 나옵니다.


 
본저작물은 zlib/png 라이센스를 따릅니다.
개인이나 단체의 독점소유를 금지합니다.
And