Luaさわってみた。
ただ計算するだけ。ここから
http://luabinaries.luaforge.net/download.html
lua5_1_4_Win32_dll8_lib.zip を解凍して適当なフォルダに置いてインクルードパスを通して、プロジェクトフォルダ内に以下二つを入れれば動く。
- lua5.1.dll
- lua51.dll
難しい使い方はまだ分からないけど、これだけでも外から読んできたテキスト動かしたりいい感じ。
//============================================================================= // ExLua.h //============================================================================= #include <lua.hpp> #pragma comment(lib,"lua51.lib") //このコードはC++です extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" }; //Luaで計算したいクラス class ExLua{ private: lua_State *L; public: ExLua(void){ L = lua_open(); luaL_openlibs(L); }; ~ExLua(void){ lua_close(L); L = 0; }; //計算する void exp(const char* str){ luaL_dostring(L,str); } //値を返してもらう template<class T> T get(const char* str){ lua_getglobal(L, str); T t = (T)lua_tonumber(L, -1); lua_pop(L,-1);//いちいちポップしないと落ちるわけではない。たまったらポップくらいでいいのかな。 return t; } }; //============================================================================= // main.cpp //============================================================================= #include <iostream> #include "ExLua.h" int main(void){ ExLua l; //計算式を突っ込む l.exp("a = 10"); l.exp("b = 5"); l.exp("c = a + b"); l.exp("d = 7.7"); //値を取り出す std::cout << l.get<int>("a") << std::endl; std::cout << l.get<int>("b") << std::endl; std::cout << l.get<int>("c") << std::endl; std::cout << l.get<double>("d") << std::endl; std::cout << l.get<int>("d") << std::endl; std::cout << "hello" << std::endl; char c; std::cin >> c; }