11. C#에서 NATIVE C++ 연동하기
지난 PPT와 똑같이
Add ( 1, 2 )의 결과값인 3이 출력됩니다.
12. C#에서 NATIVE C++ 연동하기
• C++/CLI는 C++과 C#의 문법을 둘 다 사용할 수 있습니다. (전부는 아님)
• 그래서 메인 로직은 C++로 만들고 C++/CLI에선 C#에서 사용할 수 있도록 C++ 로직에 껍데기를 씌우
는 것입니다.
13. C#에서 NATIVE C++ 연동하기
CLI의 코드를 보면
WrapTest 클래스는 Test 클래스의 메소드를
호출하는 껍데기 역할(Wrapping)을 하고
있습니다.
14. C#에서 NATIVE C++ 연동하기
DirectX Sample Browser의 한 예제를 C#에서 사용한 결과입니다.
15. C#에서 NATIVE C++ 연동하기
Core Project ( C++ )의 클래스 헤더파일입니다.
DirectX Sample을 그냥 클래스로 묶은거라 별 차이는 없습니다.
나중에 프로젝트 다운로드 받으셔서 뜯어보세요.
16. C#에서 NATIVE C++ 연동하기
Tool Project ( C# )의 코드입니다.
처음 보는 키워드가 많이 있는데 간단히 설명하겠습니다.
17. C#에서 NATIVE C++ 연동하기
Core.Init( this.Handle.ToInte32() )
CLI Project에서 선언한 Core Class의 Init 메소드를 호출합니다.
Init 메소드에서 필요한 인자는 Handle인데
여기서는 현재 Form의 핸들을 넘깁니다.
18. C#에서 NATIVE C++ 연동하기
Async, await
비동기(async)작업을 실행하겠다는 의미입니다.
Await를 만나기 전까진 동기적으로 실행되다가 await를 만나면
메소드의 제어가 호출자에게 넘어갑니다.
그냥 쉽게 말하면 프로그램이 끝날 때까지 Render()가 실행되는데
Render뿐만 아니라 다른 함수도 같이 실행될 수 있도록 하는 것입니다.
C++에선 MsgProc함수에 의해 계속 Render()가 호출될 수 있습니다.
C#에선 여러 방법이 있지만 저는 이 방법으로 꾸준히 Render()를
호출하였습니다.
19. DirectX Sample Project를 Lib로 만들어 C# 에 적용해 보았습니다.
다음 PPT엔 C++/CLI의 기본 문법과 연동하기 위해 사용된 C# 문법에 대해 알아보겠습니다.
사용했던 프로젝트
https://github.com/jihwankim/CS_PPT