c#으로 게임 엔진 만들기(1)
TRANSCRIPT
C# 으로 게임 엔진 만들기 (1)
김지환NHN NEXT
목표
• C++/CLI 에 대한 간략한 설명 .
• C# 에서 Native C++ 연동하기 . ( Native DLL 이용 )
C++/CLI
• 쉽게 말하면 Unmanaged Code 인 C++ 과 Managed Code 인 C# (.NET) 의 중간 단계 언어이다 .
• 한마디로 Native 와 .NET 의 중간 지점에서 서로를 연결해 주는 언어이다 .
C++/CLI
• C++ 프로젝트에서 Static Library ( .lib ) 를 생성• 생성한 Lib 를 C++/CLI 로 Wrapping 해서 DLL
생성• C# 에서 생성한 DLL 사용
http://topnanis.tistory.com/97
C++/CLI
• 나중에 C++/CLI 만 다룬 PPT 를 다시 만들건데 왜냐 하면 , 그 양이 너무 많기 때문입니다 .
• 지금은 연습 삼아 아주 간단한 프로젝트를 만들어 봅니다 .
C# 에서 NATIVE C++ 연동하기
• Wrapping 을 거치지 않은 Unmanaged DLL 을 C# 과 연동하는 방법에 대해서 설명합니다 .
• C++/CLI 를 이용한 방법은 다음 PPT 에 설명하도록 하겠습니다 .
C# 에서 NATIVE C++ 연동하기
새 솔루션을 생성하고 C# 프로젝트를 추가합니다 .
C# 에서 NATIVE C++ 연동하기
만들어진 솔루션에 C# 프로젝트가 추가되었습니다 .
이제 C++ 프로젝트를 새로 추가해야 합니다 .
C# 에서 NATIVE C++ 연동하기
C# 에서 NATIVE C++ 연동하기
C# 에서 NATIVE C++ 연동하기
2 개의 프로젝트가 생성되었습니다 .
프로젝트 아이콘을 보면 CoreLib 는 C++SimpleCal 는 C# 임을 알 수 있습니다 .
C# 에서 NATIVE C++ 연동하기
다른 프로젝트에서 생성될 DLL 과 경로를 맞춰주기 위해서 C# 프로젝트의 세팅을 약간 바꿨습니다 .
C# 에서 NATIVE C++ 연동하기
마찬가지로 C++ 프로젝트의 DLL 생성 경로를 바꿨습니다 .
C# 에서 NATIVE C++ 연동하기
CoreLib 프로젝트의 CoreLib.cpp
두 정수를 받아 더한 결과를 반환해주는Add 함수를 작성하였다 .
C# 에서 NATIVE C++ 연동하기
SimpleCal 프로젝트의 Form1.cs
CoreLib.dll 에서 Add 함수를 불러와 호출 .
C# 에서 NATIVE C++ 연동하기
프로젝트를 빌드하고 실행하면
MessageBox.Show( DLL.Add(1,2).ToString() );
구문에서 호출된 Add(1,2) 의 반환값인 3 이 표시된다 .
C# 에서 NATIVE C++ 연동하기
• 사실 처음 보는 문법도 많고 설명할 개념도 많지만 처음부터 너무 힘들까봐 나중에 만들 PPT 에 설명하도록 하겠습니다 .__declspec(dllexport), CallingConvention 등 일단 지금은 넘어가도록 합시다 .
C# 에서 NATIVE C++ 연동하기
간단한 덧셈 함수를 C++ 로 구현하고 C# 에서 사용해 보았습니다 .
다음 PPT 에는 DirectX Sample 을 이용해 멋진 폼을 만들어 보겠습니다 .
사용했던 프로젝트https://github.com/jihwankim/CS_PPT
END