画像データを実行ファイルに同梱したいのですが、どうやればいいんですか?
実行ファイル単体で実行できるようにしたいのです。
環境:VC++ 2008 ExpressEdition,Dxlib
画像データを実行ファイルに同梱する
Re:画像データを実行ファイルに同梱する
不可能じゃないと思いますが、無理があると思います。
色々なフリーゲームを見てみても、アーカイブで圧縮して、簡単には中身を見れなくする程度みたいです。
実行ファイルに同梱するとなると、画像を独自で変換したデータを組み込んで、読み込める様に・・・とかするんじゃないでしょうか。
多分、独学で勉強しないと無理だと思うので、そういった事を考慮すると、アーカイブで圧縮して、実行ファイルと一緒に同梱する。といった方が妥当だと思います。
色々なフリーゲームを見てみても、アーカイブで圧縮して、簡単には中身を見れなくする程度みたいです。
実行ファイルに同梱するとなると、画像を独自で変換したデータを組み込んで、読み込める様に・・・とかするんじゃないでしょうか。
多分、独学で勉強しないと無理だと思うので、そういった事を考慮すると、アーカイブで圧縮して、実行ファイルと一緒に同梱する。といった方が妥当だと思います。
Re:画像データを実行ファイルに同梱する
もう解決してしまったようなので、軽く紹介だけ。
>画像データを実行ファイルに同梱したいのですが、どうやればいいんですか
2通りのやり方でできます。
1つ目の方法は同梱したいデータを C/C++の配列に変換してしまうことです。
C/C++のソースの中に埋め込めます。
2つ目の方法はリソースとして埋め込む方法です。
リソースとしてデータを埋め込み、WinAPIの FindResource() / LoadResource() / LockResource()などを
使ってデータを取り出します。
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win72.html
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win75.html
ま、どっちにしても面倒ですね。
※ 実際にはまだ他にも方法がないわけではないですが、その方法は輪をかけて面倒で・・・。
>画像データを実行ファイルに同梱したいのですが、どうやればいいんですか
2通りのやり方でできます。
1つ目の方法は同梱したいデータを C/C++の配列に変換してしまうことです。
[color=#d0d0ff" face="sans-serif]static const unsigned char data[/url] =
{
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,
0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
0x08, 0x03, 0x00, 0x00, 0x00, 0xf4, 0xe0, 0x91,
0xf9, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59,
....(略)....
}[/color]
これは某 pngデータの先頭部分ですが、このように配列化してしまえばC/C++のソースの中に埋め込めます。
2つ目の方法はリソースとして埋め込む方法です。
リソースとしてデータを埋め込み、WinAPIの FindResource() / LoadResource() / LockResource()などを
使ってデータを取り出します。
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win72.html
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win75.html
ま、どっちにしても面倒ですね。
※ 実際にはまだ他にも方法がないわけではないですが、その方法は輪をかけて面倒で・・・。
Re:画像データを実行ファイルに同梱する
さっきFindResourceについていろいろ調べていたんですけど、
これ、解放する関数がないようです。
プロセスが削除されるときに、消えるらしいんですけど
任意で解放する関数がなくて、困りました。
>※ 実際にはまだ他にも方法がないわけではないですが、その方法は輪をかけて面倒で・・・。
exeファイルを作成した後に、リソースをexeの後ろにくっつけて
アプリ起動時にそこから読み取るとか、そんな感じですかね?
これ、解放する関数がないようです。
プロセスが削除されるときに、消えるらしいんですけど
任意で解放する関数がなくて、困りました。
>※ 実際にはまだ他にも方法がないわけではないですが、その方法は輪をかけて面倒で・・・。
exeファイルを作成した後に、リソースをexeの後ろにくっつけて
アプリ起動時にそこから読み取るとか、そんな感じですかね?
Re:画像データを実行ファイルに同梱する
>さっきFindResourceについていろいろ調べていたんですけど、
>これ、解放する関数がないようです。
昔は FreeResource() / UnlockResource()ってのがあったんですけどね。
16bitの頃は要求されるまでメモリに読み込まれることが無かったので、
明示的な解放が必要だったのですが、今はリソースは常駐してるので
LoadResource()はメモリを検索するだけになっている、みたいです。
>exeファイルを作成した後に、リソースをexeの後ろにくっつけて
>アプリ起動時にそこから読み取るとか、そんな感じですかね?
それもありますね。
考えていたのはインストーラ的なもので、
実行ファイルの中に別の実行ファイルとデータを入れて、
最初の実行ファイルは展開と内部の実行ファイルを実行する、
というやつでした。
ちょっと反則ですかね(w