bccでHSPのdll作成メモ

はじめに

http://prograpark.ninja-web.net/index.html

のHSP講座見ながらやったほうが楽です

それでも書いてない部分で ひっかかったことも多かったので

そういうのを中心に書いてみました

bccインストール

最近、bcc5.5.1配布してないっぽい

>14歳からはじめるC++わくわくゲームプログラミング教室―Windows98/2000/Me/XP対応

の付録でbccとデバッガ配布してるのでAmazonかなんかで購入お勧め 今なら安いし

自分まだwin7なんで大丈夫なんですが

どこのwinまで対応してくれるかは謎であります

win7の人は多分大丈夫

自分もwn7にダウングレードしたPC使ってるだけだし

いまだにwin7使ってる人少ないかもしれませんが

path と bcc developer

bccのpath通す時はフォルダ名とかの揺れに注意

Binだったりbinだったりbccだったりbcc55だったりしました

後、bcc developerないと辛いっす

リンカしてくれるのが嬉しい

初めてやった時 bcc developerインストールのやり方わかんなかったんで

コマンドプロンプトでdll作ろうとして挫折しました

ちなみに今回は2回目の挑戦ですw

http://prograpark.ninja-web.net/index.html

序 :Let's make plug-in!!

参考にしながらbcc developerとかインストールしましょう

デバッガのパスもとおしましょう

プロジェクト

フォルダ作成してプロジェクトを作成したら

HSPSDKの中のhsp3plugin.cpp と hsp3plugin.hをプロジェクトに追加しましょう

プロジェクトに入れるだけじゃなくプロジェクトファイルを置いているフォルダにコピーしましょう

自分はよくわかんなくて hspdebug.h hspstruct.h hspvar_core.h hspwnd.h

も入れたら動きました

cppはhsp3plugin.cppだけいれればいいです

ヘッダファイルにはマクロと構造体と関数宣言が入ってて 関数本体は全然入ってなくて cpp入れなくてもコンパイル出来ました

https://wiki.hsp.moe/MakeHPI/cpp/chapter1.html

に、hsp3plugin.cppもコンパイルしてリンクしないとダメです・・・。

と書いてました

動作確認

https://wiki.hsp.moe/MakeHPI.html

https://github.com/vain0/prograpark-hsp/tree/master/hpi/src/msgbox

の二つ動作確認取れた所っす。現在

https://github.com/vain0/prograpark-hsp/tree/master/hpi/src/msgbox

はasファイルの拡張子をhspに変えたら動きました

メモリ管理

https://wiki.hsp.moe/MakeHPI/cpp/chapter2.html

>データを保持するための領域に静的変数を使うか、動的確保にするかの制限はありませ ん。

>C/C++ならmalloc()で動的割り当ても可能です。

>ただしこの場合メモリ管理はプログラマが全責任を負って行う必要があります。

http://prograpark.ninja-web.net/index.html

Home -> HSP講座 -> HPI編 No.05

>hspmalloc, hspexpand, hspfree は、関数 malloc, realloc, free とほぼ同じです。

>実装は sbAlloc, sbExpand, sbFree 関数です。

>strmul() 関数は、実装の都合上 hspfree( psResult ) としませんが、

>hspmalloc した領域はHSPの終了時に解放されるので、

>メモリリークの心配はありません (いわゆる内部リークはします)。

両方一部抜粋っす

関心のある方はURL辿ってくださいな

mallocしたメモリは解放しなきゃメモリリーク起きるってアドバイスが多いですね

hspmallocだとメモリ解放楽みたい

CにはGCもあるんですが(ググったらGC機能のライブラリが見つかると思います)

dll内でCのコード動くか謎だったり

bccなら割と簡単にC++化出来そうではありますが

自分Cやりたくてbccにしましたから

やりたいというか

C++のサンプルはC++固有のスクリプトを求められそうで 理解しきれなさそう。的なw