#author("2017-09-13T22:46:08+09:00","","") #author("2017-09-13T23:51:04+09:00","","") **bccでHSPのdll作成メモ [#b4a1b4ca] ***はじめに [#g4172d49] http://prograpark.ninja-web.net/index.html のHSP講座見ながらやったほうが楽です それでも書いてない部分で ひっかかったことも多かったので そういうのを中心に書いてみました ***bccインストール [#r24650ca] 最近、bcc5.5.1配布してないっぽい >14歳からはじめるC++わくわくゲームプログラミング教室―Windows98/2000/Me/XP対応 の付録でbccとデバッガ配布してるのでAmazonかなんかで購入お勧め 今なら安いし 自分まだwin7なんで大丈夫なんですが どこのwinまで対応してくれるかは謎であります win7の人は多分大丈夫 自分もwn7にダウングレードしたPC使ってるだけだし いまだにwin7使ってる人少ないかもしれませんが ***path と bcc developer [#n905c1e1] 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とかインストールしましょう デバッガのパスもとおしましょう ***プロジェクト [#o00fb06e] フォルダ作成してプロジェクトを作成したら 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もコンパイルしてリンクしないとダメです・・・。 と書いてました ***動作確認 [#oea9b257] 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に変えたら動きました ***メモリ管理 [#g8508abc] 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