環境
Windows10
lua5.3.4
Visual Studio Community 2017
導入手順
まず、luaの公式サイトに行く
The Programming Language Lua
dounloadのページのBinariesのget a binaryのリンク先へ行って
Downloadsから「DLL and Includes (MingW 4 Compatible)」が付いた奴を
導入環境に合わせて手に入れる
自分は情弱Windowsマンなのでおとなしく
- lua-5.3.4_Win32_dllw4_lib.zip
をDLした
(なお、luaの圧縮ファイル(Source code)を使用する場合は
makeコマンドとか使えないとあれ
詳しいことは圧縮ファイルの中のdocの中身読んでください)
で、DLしたzipの中身は
- include(フォルダ)
- liblua53.a
- lua53.dll
の3種が入っているはず
ここで、VisualStudioを立ち上げて適当にプロジェクトとかソリューション作って
プロジェクトのプロパティを開く*1
で、構成はすべての構成にしておいて
C/C++の全般の追加のインクルードディレクトリに先ほどの
include(フォルダ)
を指定、リンカーの入力の追加の依存ファイルに
liblua53.a
を指定、最後にVisualStudioで管理しているフォルダ(プロジェクトのフォルダ)にある
Debug(とRelease)フォルダ*2に
lua53.dll
をコピペで入れる
これで動くと思う
(これでダメだったら、リンカーの全般の追加のライブラリディレクトリに
3種が入ってるフォルダを指定してみるとか)
お試しプログラム
main.cppとかと同じ場所に以下のようなtest.luaというファイルを作る
--test.lua function hoge() coroutine.yield("文1") coroutine.yield("文2") coroutine.yield("文3") return "" end
で、main.cppはこんな感じ
//main.cpp #include "lua.hpp" #include <iostream> int main(){ //luaステートの作成 lua_State *L = luaL_newstate(); //openlibsでいろんなライブラリを開く、個別にやる方法もある? luaL_openlibs(L); //luaファイルを開いて読み込み if (luaL_dofile(L, "test.lua")) { lua_close(L); return; } //コルーチンを作成 lua_State* co = lua_newthread(L); lua_getglobal(co, "hoge"); //実行 while (true) { lua_resume(co, 0, 0); const char* ret = lua_tostring(co, -1);//ここら辺にbreakpointを指定しておくと動きがわかる if (strcmp(ret, "") == 0)break; } lua_close(L); return 0; }
たぶん、動く(単体で確認してない)
breakpointを指定して変数のretを確認すれば
コルーチンが動いてる様子がわかると思う
このプログラムの参考元
Lua組み込み編
これ以上になんか詳しいリファレンスを知りたいなら
圧縮ファイル内にあるdoc/manual.htmlを読むべし