C++ 와 Lua 연동하는법
안녕하세요!
이번에 연동하기 바로 시작하겠습니다!
먼저 아래 사이트는 Lua공식 홈페이지입니다!
그중!~
[download] -> [binaries] -> [Installation에서 Lua for Windows]를 들어가주면 다음과같은
윈도우즈설치용 루아패키지가 나옵니다!
github.com/rjpcomputing/luaforwindows.git
저는 압축을 풀어서 그냥 꺼내쓰기좋은 장소에다가 저장해놓았습니다....ㅎ
그다음은 C++랑 연동하는 방법인데요!
각각 라이브러리파일과 헤더파일은 다음경로에 존재합니다.
/files/include/
/files/lib/
그리고 이거를 VisualStudio에서 추가 디렉토리 라이브러리추가랑
추가 포함 디렉터리에 다가 경로를 각각 추가하시면됩니다~~!!!
이제 Lua스크립트를 C++에서 호출한다음 그대로 실행시켜보겠습니다~!
C++은 vs를 사용했으며 lua는 sublimeText를 사용했습니다
[ C++ ]
#include <iostream> //C++ 입출력
#include <conio.h> //_getch()사용
extern "C" { //C언어라고 명시적으로 인클루딩
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
#pragma comment(lib, "lua51.lib") //외부라이브러리 참조
int adds(lua_State* L) { //두 인자값을 넘겨받아서 더한값을 리턴하는 함수(Lua에서 사용될예정)
int a = lua_tonumber(L, 1); //첫번째인자값
int b = lua_tonumber(L, 2); //두번째인자값
lua_pushnumber(L, a + b + 8); //두값을 더한값에다가 8을 더한값을 스택에 PUSH
return 1;
}
int main() {
lua_State* L = luaL_newstate(); //하나의 루아스크립트를 다룰 포인터생성
luaL_openlibs(L); //라이브러리열기
lua_register(L, "addsByC", adds); //루아스크립트에 함수추가
luaL_loadfile(L, "test001.lua"); //스크립트파일불러오기
int err = lua_pcall(L, 0, 0, 0); //실행
if (err) { //오류가있을때
std::cout << "Error: " << lua_tostring(L, -1) << std::endl; // 오류출력
}
lua_close(L); //루아종료
_getch(); //콘솔창 멈추기
}
[ Lua ]
i1 = 1
i2 = 3
print(addsByC(i1, i2))
그러면 다음과 같이 정상적으로 콘솔창에서 Lua로 스크립팅했던 내용이 나옵니다!!!!
와우~~~~
루아로 스크립팅한 내용이 C++콘솔창으로 나오다니!
이것을 이용하여 추후에 Lua에 관한api와 기본문법을 연구하여 C++와 연동하는 더욱 자세하고 다채로운 방법에 관해서 저도 공부할겸 포스팅을 시작할겁니다!
또 Lua는 저도 처음접하는 스크립트언어이기때문에 새로운언어를 공부할생각에 마음이 들뜨기도하고, 언젠가는 이 방법을 이용하여 저만의 게임개발툴이나 엔진을 만들어서 저의 블로그와 유튜브에 배포할 생각입니다. 그럼안녕!!!! 진짜로 재밌네요 근데 흑 ㅠㅠ 이런게 존재했다니 엄청 재밌다 ㅠㅠㅠ
'🧯Lua > C, 루아 라이브러리' 카테고리의 다른 글
DragonGUI 1.0.0 배포 [ GUI앱을 쉽게 만들어보자! ] (0) | 2021.04.14 |
---|
댓글