본문 바로가기

[ C/ C++ 프로그래밍 ]/[ 루아 ]

[ 루아 ] C++ 연동 - 1

루아 스크립트만 만들어지는 프로젝트는 극히 드물다.
일반적으로   C/C++로 주요 기능이 구현되어 있는 바탕 위에 루아가 내장되어, 아래 단에서 C/C++로 구현된 핵심 기능을 이용하여 루아로 빠르게 시나리오를 수정하거
새로운 시나리오를 만들어 내는 데 주로 사용된다.

혹은, 스크립트만 구현한 기능의 성능이 예상보다 느려서 취약한 부분을 대체하기 위하여 C/C++과 연동할 수 있고, 루아에서는 제공되지 않거나 구현 가능해도 너무
복잡한 부분을 C/C++에서 보다 쉽게 구현하여 결과를 루아 쪽으로 넘길 수도 있다.

그럼 일단  C++과 루아가 교시을 하려면 우선 변수들을 주고 받을 수 있어야 하는데 이를 담당하는 것이 lua state(루아상태)라는 구조체이다.

이 lua stat를 이용하여 C++로 작성된 함수를 루아에서 호출할 수 있으며, 그 반대로 C++에서도 루아 함수를 실행할 수 있다.

ㅇ C++에서 루아 호출하기

C++에서 루아로 접근 할 수 있도록 해주는 함수를 루아 API라고 부른다.

C++를  루아를 호출 할 수 있도록 세팅을 해보자

C++에서 루아를 호출할떄 VC버젼에 맞제 다운 받아서 세팅해주는것이 가장 중요하다.  그냥 다운 받았다가 3~4 시간 삽질했다 ㅠ

여기로 바로 들어가도 되고 http://luabinaries.sourceforge.net/    아니면    http://www.lua.org/ 에 들어가서 download ->Binaries 로 들어가도 된다.

 밑으로 내려가보면 History 가 있을 것이다.  그리고 이제 밑에 그림을 보고 차례 대로 하면 된다.












간단하게 설명을 하면 Win32, Win64 는 윈도우 버젼이다. 자신이 예를 들면 자신  그냥 XP 버젼이라면 Win32 버젼을 선택하면되고 만약 64비틑 버젼이라면 Win64를 다운 받으면 된다.

그리고 gcc, cygw , vc  이렇게 이름이 붙는데 이건 컴파일러 이름이다. 나는 비주얼 C++ 을 사용하기 떄문에 VC 버젼을 다운 받으면 된다.

그 뒤에 나오는 것은 버젼이다.  vc8 vc9 vc10 나오는데 vc8은 ==>2005, v9 ==> 2008, v10 ==> 2010 이다.

그래서 종합해보면  예를 들어 내가 WIn Xp 32비트 버젼이고 비주얼 C++ 2008을 사용한다면

lua5_1_4_Win32_vc9_lib.zip 를 다운 받으면 된다는 것이다.

아마 WIndow7 32버젼도 똑같이 Win32로 다운 받으면 될것이다. 




 
이제 다운을 다 받았다면 이제 VC에서 세팅을 해주어야 될것이다.

일단 전제로  컴퓨터에  C:\lua5 에 루아가 깔려 있다는 전제로 설명한다.
다운 받은 파일을 압축을 풀면 다음과 같이 나올 것이다.




include 폴더 내용물은 C:\lua5 \include (inlcude 폴더를 만들어서)복사 했고

 C:\lua5\lib 폴더를 하나 만들어서 lua5.1.lib 파일을 복사 했다.

그런 다음에  VC에서  프로젝트로 가서 win32콘솔응용프로그램을  Test버젼으로 하나 만든다 그리고
메뉴에서 도구 -> 옵션 ->프로젝트 및 솔루션 -> VC++ 디렉터리 가서  밑의 그림 처럼 포함 파일과 라이브러리 파일을 추가해 준다.





자 이제 마지막 하나만 남았다 프로젝트 안에서 lua5.1.lib 파일을 로드 해주오야 하는데 방법은 두가지가 있다.

하나는 소스에 #pragma comment(lib, "lua5.1.lib") 를 추가 해주는 방법과 아니면 밑의 그림 처럼  메뉴에서 프로젝트 -> 속성에 들어가서
다음과 같이 추가 해주는 방법이 있다. 자신이 편한방법으로 해주면 되겠다.




그럼 간단한 하게 프로그램을 하나 만들어보자




소스 다운



실행 시켜 보자



ps 참고 및 출저 : 예제로 배우는 프그래밍 루아