Home -> HSP講座 -> HPI編 ex-Runtime
last update: 2012.09.12 (Tue); hspver 3.31RC1
始めに言っておきますが、非公式の作り方です。
HSP3.x 向け拡張ランタイムは、公式の作成方法は公開されていないので、無理矢理な方法で作ってみます。
HSPはランタイムという実行ファイルで動いています。
標準命令というのは、このランタイムに付属する機能なのです。
そのため、ランタイムに自分なりに機能を付加すれば、外部ファイルなしでプラグインのような機能を使用することが可能になります。
このように、ランタイムを自作できる機能、あるいは自作したランタイムのことを、拡張ランタイムと呼びます。
最新の HSP3.31RC1 には、hspsdk/hsp3lib に lib ファイルがあるので、これを用いることで、以下のような面倒くさい方法を取ることなく拡張ランタイムが作れると思います。後で試す予定、ということでメモだけ。
以下の方法は HSP3.2 に対応しています。今後のバージョンでは失敗するかもしれません。
※Visual C++ 2010 Express Edition にのみ対応。
※以降、だ・である調。
hpi のソースをおくフォルダを prj とする。これを元に拡張ランタイムを作る。
prj/hsp32 フォルダに、OpenHSP の trunk/hsp3 フォルダの内部のファイル群をすべてコピーする。
download: from OpenHSP/trunk
また、hsp32 の中に次の2ファイルを保存しておく。
※exrt: Extended Runtime (拡張ランタイム) の略
hpi 版との互換性を保つには、hsp3plugin.h, hsp3plugin.cpp もこの中に入れておく。
フォルダ hsp32/win32gui の中にある hsp3_vc2008.vcproj を prj にコピーし、これを開く。
※その前にテキストエディタで開いて、「Name="hsp3"」「RootNamespace="hsp3"」の hsp3 を、hpi の名称に直しておいてもよい。
元々含まれているファイルを取り除き、以下の3つを放り込む。適当にフィルターで分類する。
ただし、hsp3plugin.h, hsp3plugin.cpp は含めないこと。
次の2ファイルなどを、それぞれ修正する (ただし xxx はプロジェクトにあわせて変更すべし)。
※HSP側で#regcmdされていた関数を、hsp3typeinit_xxx とする。
「追加のインクルードディレクトリ」に、"prj/hsp32" (フルパス)を追加する。
「プリプロセッサの定義」に、"HSPEXRT" を追加する。
※ hpi を作るプロジェクトとソースコードを共有するため。これが定義されていない場合は hsp3exrt の代わりに hsp3plugin が読まれる。
ちなみに、Debug はランタイムをデバッグするとき、Release はデバッグ版ランタイムのリリース版、hsprt は実行形式を作成するときのランタイム。
hsprt は *.exe を吐くが、これは *.hrt または hsprt に改名して使用する。
後はデバッグしたり公開したり。
なお、拡張ランタイムで実行形式(.exe)を作るには、
OpenHSP のコード(trunk/hspcmp)をビルドして作ったコンパイラ(hspcmp.dll)が必要なので注意する。
+参照:HSP3.2向け拡張ランタイム「rtjump」(zip) cab形式
by 上大