hspda.dllのバージョン違いによりError 2が起こる問題
555 名前:名無しさん@ピンキー[sage] 投稿日:2012/03/02(金) 19:16:41.62 ID:4Vh1y6Pe
>フィート情報でError 2
hspda.dllのバージョンと定義用記述の不整合でエラーが起きてた。
どうやらこのDLLだけは、既存の命令定義記述では新しい方のDLLには適合しないらしい。
エディタからコンパイル+実行する時と、exeとして実行する時とで異なるバージョンのhspda.dllが呼ばれるため、
これがエラーの原因になる。
既存の命令定義記述: Elona同梱の古いhspda.dllに適合
エディタから実行すると、HSP同梱の新しいhspda.dllが呼ばれる→命令実行時にError 1が起きて固まる。
定義ファイルhspda.asを#includeする: 新しいhspda.dllに適合
exeから実行すると、古いhspda.dllが呼ばれる→命令実行時にError 2が起きて終了。
なお、今回からzipアーカイブのフォルダ構成を変更。exeとreadmeをrootに置くようにした。
(URL省略)
HSPのバージョンを新しくしてコンパイルすると、HSPDAプラグインが以前のものに対応していないためエラーが出る
新しくした場合は必ずDLLも新しいものを同梱するようにする
64bit版でelochatが閉じられない問題
http://www.onionsoft.net/hsp/v33/doclib/history.txt
2009/10/19 3.2a
Windows Vista,及び7の64bit(x64)版においてHSP実行時のウインドゥを閉じることができなくなる(end命令による終了を除く)不具合を修正
多分新しいバージョンでコンパイルすれば直るはず
ウィンドウサイズを可変にするためID1のウィンドウを使用しているので
#packopt
とでもスクリプトの先頭に追加してID0のウィンドウを非表示にしておく
callマクロの展開がうまくいかない問題
ttp://elona.squares.net/forum/viewtopic.php?f=7&t=4779
・譲渡されたソースをそのままHSP 3.21でコンパイルしようとするとエラーが発生します
原因はHSP 3.2から追加されたラベル変数に関連する物で一つ上の記事で紹介されているページにて記載されている
パラメータを設定してgosubを行う部分を#defineを使用してcallに置き換えている部分にあります
対処はinit.hsp 4261行目で
#define global call(%1,%2=0) procRef%2: gosub *%1
と定義されている部分を
#define global call(%1,%2=0) procRef%2: gosub %1
に変更し、「全ての」callマクロ使用部分の第一パラメータの先頭に*を追加すればコンパイルできるようになります
例:call act_melee を call *act_melee に変更
前も紹介したが重要なので一応再掲
一括置換が行えるエディタかツールを用いると良い
too many macro parameter
http://www.onionsoft.net/hsp/v33/doclib/history.txt
2010/01/29 3.21RC1
BT#230: #defineプリプロセッサの引数によりクラッシュすることがある不具合を修正(lagwn)
HSP3.3で配布ソースをコンパイルすると#Error: too many macro parameterと表示されてコンパイルが通らない
おそらくこの修正ではないかと思うが、マクロの展開が引数を勝手に補完しないようになったようだ
init.hsp 1350行目付近 cAiItem → cAiItem(%1)
init.hsp 2580行目付近 mefOwner → mefOwner(%1)
init.hsp 2580行目付近 mefRef → mefRef(%1)
init.hsp 2580行目付近 mefRef2 → mefRef2(%1)
init.hsp 3170行目付近 sp → sp(%1)
material_data.hsp 65行目 matLv → matLv(%1)
material_data.hsp 66行目 matRare → matRare(%1)
material_data.hsp 67行目 matPic → matPic(%1)
と、手動でマクロのパラメータを付けておく
old deffunc expression
HSP2系での#deffuncの書式を使用していると警告が出る
#deffunc
警告が出るだけで特に致命的な影響は出ないので気になるなら程度で