まとめ
- tolua++ を VisualStudio をビルドしてみた
- 2021 年度時点で,日本語情報が古いものしかないため,一応記録を残しておく
tolua++ って何?
tolua++ とは,
C/C++ ⇔ Lua 間の関数,クラスの呼び出しや,
データの受け渡しに必要なコードを,
自動生成してくれるツール.
自動生成しなくても良いのだが,
地獄のようなグルー(接続)コードを手書きするのは
現実的ではない.
tolua というツールの後継.
注意事項
いくつか注意事項がある.
- 対応している lua のバージョンは 5.1 .
- それ以降のバージョンでは tolua++ のビルドが通らない.
- なお, 2021 年時点での lua の最新版は 5.4
- 公式サイトが 404.
- 開発が止まっているためか,公式サイトにアクセスできない.
- プロバイダによってはアクセスできるらしい?
- という情報もあるが,プロキシ経由するなどしても駄目だった.
- 上記の理由から, exe を入手する術がなく,自力でビルドする必要がある.
- 幸いにも,コードは github に上がっている.
- どうやら最新のコード?(ver 1.0.92)が上がっている模様.
- VIsual Studio 2017 など,新しい msvc でビルドを通す場合,コードに手を入れる必要がある.
- 一応回避の方法はある.ので紹介する.
github からコードを落としてくる
github にコードが上がっているので落としてくる.
クローンしても良いし, zip で取得しても良い.
lua 5.1 をビルドする
ソースコードを取得
前述の通り, lua 5.1 にしか対応していないため,
事前に lua 5.1 をビルドして用意しておく必要がある.
公式のダウンロードセンターから落としてきて解凍する.
www.lua.org
5.1 が必要なので,
- lua-5.1.5.tar.gz
で良い.
Visual Studio 2017 でビルドする
個人的には sln と vcxproj を作成してしまうのが楽.
いつも通り
Visual Studio を立ち上げて,
新規プロジェクト > C++ > 空のプロジェクト
あたりで作成する.
構成を static library にして,
残りの構成も自分の環境に合わせて整え,
src 内のソースコード類 (.cpp / .h)を突っ込んで,
- lua.c
- luac.c
だけプロジェクトから除外して,
ビルドする.
この時,
error C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
の警告が出た場合は,
- _CRT_SECURE_NO_WARNINGS
をプリプロセッサで定義してやることで回避可能. *1
tolua++.exe をビルドする
github から取得しておいた tolus++ をビルドする.
ありがたいことに, win32/vc7 の sln が付属しているので,
こいつを新しい Visual Studio で開いてアップグレードしてやる.
するとビルド環境が出来上がるので,
構成を withLua51_Release にして,
先程ビルドした lua 5.1 のパスを通して
ビルドする.
tolua++.exe が出来上がるはず.
tolua++.lib をビルドする
本来であれば tolua++.lib をビルドするのが良いんだろうけど,
もはや面倒なので,
利用側の sln に src/libフォルダ内の コード類を含めてやればとりあえず OK .
以上. *2
参考書
情報は古いが貴重な日本語情報.
おわりに
ここまで書いておいてなんだが,
多分 tolua++ は使わずに luabind のほうが良さそう. *3
いちいち .pkg を記載するのはやってられない予感.
ただし, luabind は boost を利用しているので環境に相談だが.
tolua++ の
使い方の記事も書こうと思ったが別にいらないよね?