비주얼노벨 강좌

여기에 있는 루아의 강좌중 가장 필요한게 없는거 같아서 올려봅니다.

 

루아의 문법을 아무리 잘 알고 있다고 하더라도 정작 C++에 연동시키는 법을 모르면

 

아무 쓸모가 없겠죠??

 

일단 제가 루아 홈페이지에 가서 루아 스크립트를 다운받았는데..  소스통째로 던져주네요 -_-;;

 

루아 원본 소스를 받으시고 싶으신분들은 http://www.lua.org 를 참조해주세요!

 

그나저나 이렇게 소스를 통째로 주면 사용하기가 약간 귀찮습니다.

 

 그래서 제가 정리해서!!!  라이브러리로 만들었습니다.

 

루아스크립트 버젼은 5.1.4버젼입니다.

 

클릭해주세요 Rua.zip  <---

 

다운받아서 C드라이브에 압축을 풀어주세요.

 

강좌도 C드라이브에 압축을 풀었다는 가정하고 진행하겠습니다.

 

일단 이것을 비쥬얼 C++에서 사용 할수 있게 하려면!!

 

("저는 비쥬얼 스튜디오 2008을 기반으로 설명을 하겠습니다.")

 

 

1. 비쥬얼 스튜디오 헤더파일과 LIB파일을 지정해주기!!

도구 -> 옵션을 눌러주세요!!

 

1.JPG

 

 

 

 

프로젝트 및 솔루션 ->  VC++  디렉터리를 클릭하시면 다음파일의 디렉터리 표시라는 메뉴가 보이지요!? 여기서

 

포함파일을 선택한후 제가 올려놓은 루아 라이브러리의 include 폴더의 경로를 여기에 적어주세요!~!!

 

2.JPG

 

그 다음  "다음 파일의 디렉터리 표시" 메뉴에서 라이브러리 파일을 선택하시고 제가 올려놓은 루아 라이브러리의 lib폴더의 경로를

 

지정해주세요!!

 

3.JPG

 

 

일단 이렇게 되면 컴파일러 자체의 설정은 끝났습니다만..

 

우리가 프로그램을 만들때 프로젝트 단위로 만듭니다.  새로운 프로젝트를 생성할때마다  루아 라이브러리 파일을

 

사용하겠다고 알려주어야 합니다!!

 

제가 만든 프로젝트 이름이 STL_Guid라고 되어 있는데 신경쓰지마세요 -ㅅ-

(STL공부하던중에 한거라 후후후-)

 

어쨋든 프로젝트 -> 속성을 클릭하세요 단축키로 ALT +F7을 누르셔도 상관 없습니다.

 

4.JPG

 

 

다음과 같은 창이 나오는데요 여기서    구성속성  ->   링커   ->  입력  -> 추가종속성에  Rua.lib 라고 적어주시면

 

루아스크립트를 사용하기 위한 준비는 끝났습니다. 이제는 rua코드를 작성하기만 하시면 됩니다!!

5.JPG

 

 

 

 

샘플

 

 

#include <stdio.h>

#include <string.h>

 extern "C"

{

#include "lua.h"

#include "lauxlib.h"

#include "lualib.h"

}

 

 

int main(void)

{

           char buff[256];

           int error;

           lua_State *L = luaL_newstate();  //루아를연다.

           luaL_openlibs(L);   //루아표준라이브러리를연다.

 

           while(fgets(buff, sizeof(buff), stdin) != NULL)

           {

                     error =luaL_loadbuffer(L, buff, strlen(buff), "line") ||

                                lua_pcall(L, 0, 0, 0);          

                     if(error)

                     {

                                fprintf(stderr, "%s", lua_tostring(L, -1));

                                lua_pop(L, 1);      //스택으로부터오류메시지를뽑아낸다.

                     }

           }

           lua_close(L);

           return 0;

}

 

 

저는 소스를 이렇게 작성하고 컴파일 (F7키) 누르고 실행해보았습니다.   실행단축키 Ctrl + F5

 

자아 밑에 엠피님이 사용했던 문법을 그대로 타이핑 해보았지요

  7.JPG

 

a = print

a("루아는 마법사이다")

라고 치니

 

루아는 마법사입니다 라는 글이 콘솔창으로 나오는것을 확인 할수 있습니다.

 

여담으로 함수도 변수로 관리한다고 느낄수 있지만.. 사실은 이 함수의 포인터로 관리한다는 것입니다.

 

사실 이것을 C언어로도 표현할수도 있습니다.

 

#include <stdio.h>

 

int main()

{

           puts("나는마법사이다") ;

 

           int (*a) (const char*) = puts ;

 

           a("나는마법사이다.");

 

 

           return 0;

}

 

다음 스샷과 같이 제대로 나오는 것을 알수 있습니다.

8.JPG

 

하지만 루아 스크립트언어와는 달리 명시적으로 함수의 리턴인자의 타입과 매개변수의 타입및 갯수를 정확히 일치 시켜줘야 합니다.

 

 

 

루비언어의

 

a = print

 

함수 포인터의 선언과 정의방법

 

 

 

 

C/C++의

 

int (*a) (const char*) = puts ;

 

함수 포인터선언 방법

 

어떤게 더 간결하고 편해보이는지는 대충봐도 느낌을 올껏입니다.

이래서 스크립트언어가 편하다는 말을 많이 하는건가 봅니다!

 

 

 

 

TAG •
Atachment
첨부 '8'

List of Articles
분류 제목 글쓴이 날짜 조회 수
Ren'Py 렌파이 관련 유용한 링크 모음 3 file 습작 2012.12.02 17640
Nekonovel 네코노벨 관련 유용한 링크 모음 1 file 습작 2012.11.19 11979
Vasilriot 바실리어트에서 지원하는 vr팩. 언팩이 가능할까? 하늘바라KSND 2013.05.11 2651
기타 제작툴 소개 : Novelty란 무엇인가? 4 file 습작 2013.05.09 4561
Vasilriot 바실리어트 사용할 때 조심해야 할 것 :: 글자수 제한(명령어 오류)(2013.05.15수정) file 하늘바라KSND 2013.05.09 2750
기타 제작툴 소개 : LiveMaker란 무엇인가? 4 file 습작 2013.05.09 8706
Vasilriot 장면 전환할 때 사용할 '장막효과'를 구현해보자. 하늘바라KSND 2013.05.09 2705
Vasilriot 노가다를 줄여주는 명령어, 인라인 사용하기. 2 하늘바라KSND 2013.02.18 2951
VNAP Vnap 제대로 게임 한 번 만들어 보자!(브이냅 기초) 4 file FNS키리토 2013.02.14 5106
VNAP Vnap 강좌 제 2 편! 작은하마 길들이기 (CG) 9 file FNS키리토 2013.01.28 5073
VNAP vnap으로 뭐든 해보자! 1 편! 15 file FNS키리토 2013.01.10 4188
Neko:기초 네코노벨 무작정 따라하기 - 2편 : 로고만들기 9 file 습작 2012.12.21 6147
Vasilriot 바실리어트 버튼 사용하기 file 하늘바라KSND 2012.12.21 3164
Neko:기초 네코노벨 무작정 따라하기 - 1편 : 둘러보기 2 file 습작 2012.12.08 12613
Vasilriot 바실리어트 스크립트 정리하기. file 하늘바라KSND 2012.11.10 3509
Neko:Lua 마인크래프트에서 루아언어를 써 Boa요! 2 철쭉 2012.07.21 4183
Neko:Lua Lua for Windows 1 루아마당 2010.08.08 5556
Neko:Lua LUA 란 무엇인가? 6 루아마당 2010.08.08 7229
Neko:Lua 루아의 메모리 관리 방식 루아마당 2010.08.08 5472
Neko:Lua 루아 스크립트를 1 무뇌인 2010.04.20 5924
Neko:Lua 비쥬얼 C++에 루아 연동시키기- file Saber 2010.01.02 7983
Neko:Lua 좀비서바이벌 1.11b 버전 Lua 스크립트 16 판져중위 2009.11.30 9285
Board Pagination Prev 1 2 3 Next
/ 3