C++ Lua ゲーム開発

【tolua++】tolua++を VisualStudio2017 でビルドして使ってみる

 

まとめ

  • 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 にコードが上がっているので落としてくる.

github.com

クローンしても良いし, 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++ の
使い方の記事も書こうと思ったが別にいらないよね?

*1:※あるいは全箇所コードを修正するか

*2:力尽きた

*3:つまり供養記事

  • この記事を書いた人

GOTH

鹿児島県出身,吉祥寺在住の27歳.職業はゲーム会社でプログラマー.趣味はバイク,車,キャンプ,ガジェット,読書,そしてゲーム開発. サイトのテーマはプログラミングとガジェットでライフハック.たまに趣味に関する雑感や記録を残していく備忘録.ツイッターもやってます.
自己紹介
お問い合わせ

-C++, Lua, ゲーム開発