▽Squirrelを組み込む2▽
「VisualC++2008EEでSquirrelが使えるようにする方法」で作成した
DLLファイルを使って、プログラムにSquirrelを組み込んでみます。
今回のプログラムではC++側からスクリプトで定義した関数を実行しています。
(C++側でゲームの全体のループを管理し、各処理はスクリプトで処理するイメージです)
1~7までは前回「Squirrelを組み込む」と同じ手順です。
飛ばす場合はこちら
1.ソリューション(プロジェクト)を作成する
Win32コンソールアプリケーションを作成します。
1.VisualC++2008EEを起動。
2.メニューの「ファイル」-「新規作成」-「プロジェクト」を選択。
3.「Win32 コンソール アプリケーション」を選択して新規作成を行う。
※アプリケーションウィザードはWindowsアプリケーションで
「空のプロジェクト」にチェックを入れる
2.dllファイルをコピーする
前回、作成したdllファイルをコピーします。
1.1で作成したソリューションのフォルダにlibフォルダを作成。
2.「前回のフォルダ/lib」から以下のdllファイルをコピーする。
・sqplus.lib
・sqstdlib.lib
・squirrel.lib
3.libフォルダをプロジェクトに追加する
ビルド時にdllファイルが読み込まれるようにします。
1.メニューの「プロジェクト」-「〇〇(プロジェクト名)のプロパティ」を選択。
2.「リンカ」をクリックし、「追加のライブラリディレクトリ」に「lib」を入力。
3.OKボタンをクリックし、閉じる。
4.ヘッダーファイルをコピーする
前回、作成したプロジェクトからヘッダーファイルをコピーします。
1.1で作成したソリューションのフォルダにincludeフォルダを作成。
2.「前回のフォルダ/include」からすべてのヘッダーファイルをコピーする。
3.「前回のフォルダ/sqplus」からすべてのヘッダーファイルをコピーする。
5.includeフォルダをプロジェクトに追加する
ビルド時にヘッダーファイルが読み込まれるようにします。
1.メニューの「プロジェクト」-「〇〇(プロジェクト名)のプロパティ」を選択。
2.「C/C++」をクリックし、「追加のインクルードディレクトリ」に「include」を入力。
3.OKボタンをクリックし、閉じる。
6.文字セットを変更する
文字セットをS-Jisに変更します。
1.メニューの「プロジェクト」-「〇〇(プロジェクト名)のプロパティ」を選択。
2.「全般」をクリックし、「文字セット」に「マルチバイト文字セットを使用する」を選択。
3.OKボタンをクリックし、閉じる。
7.ソースファイルを作成する
main.cppを新規作成します。
1.ソリューションエクスプローラの「ソースファイル」を右クリック。
2.「追加」-「新しい項目」をクリック。
3.「C++ファイル」を選択し、ファイル名を入力、追加ボタンを押す。
8.ソースファイルを記述する
9.スクリプトファイルを作成する
実行ファイルが作成されるフォルダ(DebugフォルダまたはReleaseフォルダ)に
スクリプトファイルを作成します。
1.メモ帳を開く。
2.文字コードを「ANSI」にしてtest.nutとして保存する。
(他のテキストエディタの場合はSJISで作成)
10.スクリプトファイル(test.nut)を記述する
VisualStudioでF5を押してプログラムをビルド、実行します。
コマンドプロンプトが開き、下記のとおり表示されれば成功です。
DLLファイルを使って、プログラムにSquirrelを組み込んでみます。
今回のプログラムではC++側からスクリプトで定義した関数を実行しています。
(C++側でゲームの全体のループを管理し、各処理はスクリプトで処理するイメージです)
1~7までは前回「Squirrelを組み込む」と同じ手順です。
飛ばす場合はこちら
1.ソリューション(プロジェクト)を作成する
Win32コンソールアプリケーションを作成します。
1.VisualC++2008EEを起動。
2.メニューの「ファイル」-「新規作成」-「プロジェクト」を選択。
3.「Win32 コンソール アプリケーション」を選択して新規作成を行う。
※アプリケーションウィザードはWindowsアプリケーションで
「空のプロジェクト」にチェックを入れる
2.dllファイルをコピーする
前回、作成したdllファイルをコピーします。
1.1で作成したソリューションのフォルダにlibフォルダを作成。
2.「前回のフォルダ/lib」から以下のdllファイルをコピーする。
・sqplus.lib
・sqstdlib.lib
・squirrel.lib
3.libフォルダをプロジェクトに追加する
ビルド時にdllファイルが読み込まれるようにします。
1.メニューの「プロジェクト」-「〇〇(プロジェクト名)のプロパティ」を選択。
2.「リンカ」をクリックし、「追加のライブラリディレクトリ」に「lib」を入力。
3.OKボタンをクリックし、閉じる。
4.ヘッダーファイルをコピーする
前回、作成したプロジェクトからヘッダーファイルをコピーします。
1.1で作成したソリューションのフォルダにincludeフォルダを作成。
2.「前回のフォルダ/include」からすべてのヘッダーファイルをコピーする。
3.「前回のフォルダ/sqplus」からすべてのヘッダーファイルをコピーする。
5.includeフォルダをプロジェクトに追加する
ビルド時にヘッダーファイルが読み込まれるようにします。
1.メニューの「プロジェクト」-「〇〇(プロジェクト名)のプロパティ」を選択。
2.「C/C++」をクリックし、「追加のインクルードディレクトリ」に「include」を入力。
3.OKボタンをクリックし、閉じる。
6.文字セットを変更する
文字セットをS-Jisに変更します。
1.メニューの「プロジェクト」-「〇〇(プロジェクト名)のプロパティ」を選択。
2.「全般」をクリックし、「文字セット」に「マルチバイト文字セットを使用する」を選択。
3.OKボタンをクリックし、閉じる。
7.ソースファイルを作成する
main.cppを新規作成します。
1.ソリューションエクスプローラの「ソースファイル」を右クリック。
2.「追加」-「新しい項目」をクリック。
3.「C++ファイル」を選択し、ファイル名を入力、追加ボタンを押す。
8.ソースファイルを記述する
#pragma comment(lib, "squirrel.lib") #pragma comment(lib, "sqplus.lib") #pragma comment(lib, "sqstdlib.lib") #include <stdlib.h> #include <stdio.h> #include <string.h> #include <windows.h> #include <sqplus.h> //デバッグ用メソッド static void printFunc(HSQUIRRELVM v, const SQChar* s, ...) { va_list arglist; va_start(arglist, s); vprintf(s, arglist); va_end(arglist); } int main() { //Squirrelバーチャルマシン初期化 SquirrelVM::Init(); sq_setprintfunc(SquirrelVM::GetVMPtr(),::printFunc); try{ //Squirrelスクリプトを記述したファイルを読み込んでコンパイル SquirrelObject sqObj = SquirrelVM::CompileScript(_T("test.nut")); //Squirrelスクリプトの実行 SquirrelVM::RunScript(sqObj); //開始処理 SqPlus::SquirrelFunction <void> (_T("onLoad"))(); //メイン処理 //実際には終了条件が真になるまで、ループ処理を行います。 SqPlus::SquirrelFunction <void> (_T("onProc"))(); //終了処理 SqPlus::SquirrelFunction <void> (_T("onUnload"))(); sqObj.Reset(); } catch (SquirrelError & e) { // エラーがあった scprintf(_T("Error: %s\n"), e.desc); } // Squirrelバーチャルマシンシャットダウン SquirrelVM::Shutdown(); return 0; }
9.スクリプトファイルを作成する
実行ファイルが作成されるフォルダ(DebugフォルダまたはReleaseフォルダ)に
スクリプトファイルを作成します。
1.メモ帳を開く。
2.文字コードを「ANSI」にしてtest.nutとして保存する。
(他のテキストエディタの場合はSJISで作成)
10.スクリプトファイル(test.nut)を記述する
//開始処理 function onLoad(){ print("開始処理実行!\n"); } //メイン処理 function onProc(){ print("メイン処理実行!\n"); } //終了処理 function onUnload(){ print("終了処理実行!\n"); }11.プログラムを実行する
VisualStudioでF5を押してプログラムをビルド、実行します。
コマンドプロンプトが開き、下記のとおり表示されれば成功です。
開始処理実行! メイン処理実行! 終了処理実行!
▽参考にしたサイト様▽
▽改変履歴▽
2010/09/02
・ブログ「日曜ゲームクリエータの日記」から再編
・ブログ「日曜ゲームクリエータの日記」から再編