비주얼노벨 강좌

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

 

루아의 문법을 아무리 잘 알고 있다고 하더라도 정작 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
Vasilriot 해상도 조절에 관한 간단한 고찰 2 하늘바라KSND 2013.05.18 3128
Visual Novel Maker 한글 텍스트 입력 file 러닝은빛 2017.11.21 1427
피니엔진 피니엔진 타이틀 만들기 예제(구버전) 1 file 하늘바라KSND 2015.01.27 1754
피니엔진 텍스트, 대화, 독백 명령어 하늘바라KSND 2014.12.21 1554
피니엔진 타이틀+클릭메뉴 예제 file 하늘바라KSND 2015.07.11 1091
Neko:Lua 좀비서바이벌 1.11b 버전 Lua 스크립트 16 판져중위 2009.11.30 9279
기타 제작툴 소개 : Novelty란 무엇인가? 4 file 습작 2013.05.09 4553
기타 제작툴 소개 : LiveMaker란 무엇인가? 4 file 습작 2013.05.09 8698
Vasilriot 장면 전환할 때 사용할 '장막효과'를 구현해보자. 하늘바라KSND 2013.05.09 2701
피니엔진 애니메이션-스프라이트 간단한 팁 몇가지 하늘바라KSND 2015.07.11 1279
피니엔진 안드로이드로 배포판을 만들기 위해 필요한 것들 하늘바라KSND 2014.12.20 1514
Neko:기타 쓰레드에 '대기' 명령어를 넣었을 때 나타날 수 있는 현상 file 하늘바라KSND 2014.11.27 1016
VNAP 선택지 발생 3 file FNS키리토 2015.01.11 2001
Neko:Lua 비쥬얼 C++에 루아 연동시키기- file Saber 2010.01.02 7976
기타 비주얼 노벨을 처음 제작하시는 분들께 1 file FNS키리토 2015.01.11 13753
Vasilriot 바실리어트의 최신 버전 file 하늘바라KSND 2013.05.11 3977
Vasilriot 바실리어트에서 지원하는 vr팩. 언팩이 가능할까? 하늘바라KSND 2013.05.11 2646
Vasilriot 바실리어트 스크립트 정리하기. file 하늘바라KSND 2012.11.10 3501
Vasilriot 바실리어트 사용할 때 조심해야 할 것 :: 글자수 제한(명령어 오류)(2013.05.15수정) file 하늘바라KSND 2013.05.09 2750
Vasilriot 바실리어트 버튼 사용하기 file 하늘바라KSND 2012.12.21 3160
Board Pagination Prev 1 2 3 Next
/ 3