c#으로 게임 엔진 만들기(1)

19
C# 으으 으으 으으 으으으 (1) 으으으 NHN NEXT

Upload: -

Post on 24-May-2015

1.346 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: C#으로 게임 엔진 만들기(1)

C# 으로 게임 엔진 만들기 (1)

김지환NHN NEXT

Page 2: C#으로 게임 엔진 만들기(1)

목표

• C++/CLI 에 대한 간략한 설명 .

• C# 에서 Native C++ 연동하기 . ( Native DLL 이용 )

Page 3: C#으로 게임 엔진 만들기(1)

C++/CLI

• 쉽게 말하면 Unmanaged Code 인 C++ 과 Managed Code 인 C# (.NET) 의 중간 단계 언어이다 .

• 한마디로 Native 와 .NET 의 중간 지점에서 서로를 연결해 주는 언어이다 .

Page 4: C#으로 게임 엔진 만들기(1)

C++/CLI

• C++ 프로젝트에서 Static Library ( .lib ) 를 생성• 생성한 Lib 를 C++/CLI 로 Wrapping 해서 DLL

생성• C# 에서 생성한 DLL 사용

http://topnanis.tistory.com/97

Page 5: C#으로 게임 엔진 만들기(1)

C++/CLI

• 나중에 C++/CLI 만 다룬 PPT 를 다시 만들건데 왜냐 하면 , 그 양이 너무 많기 때문입니다 .

• 지금은 연습 삼아 아주 간단한 프로젝트를 만들어 봅니다 .

Page 6: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

• Wrapping 을 거치지 않은 Unmanaged DLL 을 C# 과 연동하는 방법에 대해서 설명합니다 .

• C++/CLI 를 이용한 방법은 다음 PPT 에 설명하도록 하겠습니다 .

Page 7: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

새 솔루션을 생성하고 C# 프로젝트를 추가합니다 .

Page 8: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

만들어진 솔루션에 C# 프로젝트가 추가되었습니다 .

이제 C++ 프로젝트를 새로 추가해야 합니다 .

Page 9: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

Page 10: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

Page 11: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

2 개의 프로젝트가 생성되었습니다 .

프로젝트 아이콘을 보면 CoreLib 는 C++SimpleCal 는 C# 임을 알 수 있습니다 .

Page 12: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

다른 프로젝트에서 생성될 DLL 과 경로를 맞춰주기 위해서 C# 프로젝트의 세팅을 약간 바꿨습니다 .

Page 13: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

마찬가지로 C++ 프로젝트의 DLL 생성 경로를 바꿨습니다 .

Page 14: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

CoreLib 프로젝트의 CoreLib.cpp

두 정수를 받아 더한 결과를 반환해주는Add 함수를 작성하였다 .

Page 15: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

SimpleCal 프로젝트의 Form1.cs

CoreLib.dll 에서 Add 함수를 불러와 호출 .

Page 16: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

프로젝트를 빌드하고 실행하면

MessageBox.Show( DLL.Add(1,2).ToString() );

구문에서 호출된 Add(1,2) 의 반환값인 3 이 표시된다 .

Page 17: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

• 사실 처음 보는 문법도 많고 설명할 개념도 많지만 처음부터 너무 힘들까봐 나중에 만들 PPT 에 설명하도록 하겠습니다 .__declspec(dllexport), CallingConvention 등 일단 지금은 넘어가도록 합시다 .

Page 18: C#으로 게임 엔진 만들기(1)

C# 에서 NATIVE C++ 연동하기

간단한 덧셈 함수를 C++ 로 구현하고 C# 에서 사용해 보았습니다 .

다음 PPT 에는 DirectX Sample 을 이용해 멋진 폼을 만들어 보겠습니다 .

사용했던 프로젝트https://github.com/jihwankim/CS_PPT

Page 19: C#으로 게임 엔진 만들기(1)

END