비주얼노벨 강좌

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

 

루아의 문법을 아무리 잘 알고 있다고 하더라도 정작 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 17571
Nekonovel 네코노벨 관련 유용한 링크 모음 1 file 습작 2012.11.19 11944
기타 비주얼 노벨을 처음 제작하시는 분들께 1 file FNS키리토 2015.01.11 13753
Neko:Lua 루아 스크립트 기초 강좌 1부 6 백호 2009.01.12 13616
Neko:기초 네코노벨 무작정 따라하기 - 1편 : 둘러보기 2 file 습작 2012.12.08 12603
Neko:Lua 좀비서바이벌 1.11b 버전 Lua 스크립트 16 판져중위 2009.11.30 9279
Neko:Lua 1부. 루아(LUA)가 무엇인가요? 12 Mania 2009.01.10 9036
기타 제작툴 소개 : LiveMaker란 무엇인가? 4 file 습작 2013.05.09 8698
Neko:Lua 루아스크립트란 무엇인가? 9 행운 2009.06.11 8444
Neko:Lua 루아에 잘못 알고계신분이 있는거 같아서 몇줄 적습니다. 16 코르뉴 2009.09.25 8081
Neko:Lua 비쥬얼 C++에 루아 연동시키기- file Saber 2010.01.02 7976
Neko:Lua 루아 스크립트 기초 강좌 2부 5 백호 2009.01.12 7755
Neko:Lua 루아의 재미있는 기능! 15 엠피군 2009.01.18 7675
Neko:Lua lua table 사용방법 - 개인적으로 배우고 있는것. [펌] 3 나뚜루 2009.01.10 7556
Neko:Lua Lua 시작 [펌] 6 나뚜루 2009.01.10 7431
Neko:Lua LUA 란 무엇인가? 6 루아마당 2010.08.08 7224
Neko:Lua 루아가 뭐죠? 11 sooe 2009.06.09 7203
Neko:Lua 루아에 대하여 궁금한점 18 아하!잘봤어요. 2009.05.04 7138
Neko:Lua 2부. 데이터 타입 3 Mania 2009.01.10 6257
Neko:Lua 루아가뭔가요 10 영웅 2009.09.24 6176
Neko:기초 네코노벨 무작정 따라하기 - 2편 : 로고만들기 9 file 습작 2012.12.21 6140
Neko:Lua 루아 스크립트를 1 무뇌인 2010.04.20 5923
Board Pagination Prev 1 2 3 Next
/ 3