« Sigmarion IIIでNavi2chとRieceを動かす | Main | NS Basic/PalmでWristPDAのボタン入力を判定 »

2005.11.19

NS/Basic Palmで実行ファイルに共有ライブラリを埋め込む

WristPDA用のアプリを作ろうとすると、デカフォントのためにNSBSystemLib.prcという共有ライブラリが必要になるけれども、それまでユーザにインストールさせるのは負担。
そんな場合は、実行ファイルの中に共有ライブラリをリソースとして埋め込む手が使えると知った。

共有ライブラリが必要な処理の前(普通はStartupだろう)に、共有ライブラリの存在判定をして、無かったらリソースからの展開処理を実行。
下記の例でいくと、「dbcreatedatabasefromresource("DBIM", 1009)」が実行されると、実行ファイルに埋め込んだNSBSystemLib.prcがメモリ中に復元され、共有ライブラリのインストールが完了。

実行ファイルに埋め込まれたNSBSystemLib.prcと、メモリに展開されたNSBSystemLib.prcとで、メモリを倍消費することになるが、Fatal Error知らずで、こりゃいいかも。

Sub Project_Startup()
Dim res as Integer
Dim dblib as Database

'NSBSystemLibが存在するかどうか、試しに開いてみる
res = dbopen(dblib, "NSBSystemLib", 0)
'NSBSystemLibが存在しなかったら、
If res > 0 Then
'リソースからデータベースファイル(共有ライブラリ)を作る
'Object IDは、プロジェクトにリソースとして放り込んだNSBSystemLibのもの
dbcreatedatabasefromresource("DBIM", 1009)
Else
'もし存在してたら、開いたNSBSystemLibを閉じる
res = dbclose(dblib)
End If
'共有ライブラリの読み込み
LoadLibrary "NSBSystemLib", "NSL"
End Sub

----
検索用: nsbasic

|

« Sigmarion IIIでNavi2chとRieceを動かす | Main | NS Basic/PalmでWristPDAのボタン入力を判定 »