PSP xvi

PSPプログラミングを教えるブログ(本気で頑張る人アクセス大歓迎サイト)

PSP-X.gif

記事の間違いを報告  新アップローダー
記事修正情報 PSPプログラミング資料 自作ゲーム PSP用エミュレータ リンク

公認リンク
公式PSP専科 公式PSVita専科 はじめるPSPSDK PSP EXEC GAME M@STER PSP 猫山のYouTubeチャンネル

TAG
全記事にタグをつけています  http://nekoyama2gillien.blog36.fc2.com/?tag=タグ
PSP PSPプログラミング DXライブラリPortable OSLib ショートプログラム ハローワールド
PSP自作ゲーム PSP自作ソフト エミュレータ ゲームアーカイブス PSP動画
動画 初音ミク ミクミクダンス MMDドラマ ゲーム 魔法少女まどか☆マギカ 侵略!イカ娘
アイドルマスター

このブログについて

このブログでは、非公式のPSPソフト、いわゆる自作ソフト( PSP Homebrew )を作る事を目的とします。

著作権などの こまかい利用規約については、こちらを開いてお読み下さい

このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ


当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。


このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all

スポンサーサイト 

--/--/--
--. --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[edit]

CM: --
TB: --

page top

PSPプログラミング ライブラリについて解説 

2012/02/05
Sun. 05:03

「MakefileのLIBSについて詳しく教えて下さい。」という質問を受けたので


Q.ライブラリって何ですか?
A.プログラムコードをまとめてアーカイブしたもの。 プログラム集。 ライブラリを活用すれば、複雑なプログラムを書く手間が減ります

つまり、PSPプログラミングで PNG画像を扱いたい場合、
・LIBPNGライブラリ
DXライブラリPortable
OSLib(OLD School Library)
のどれかを使えばを使えば可能

mp3音楽を再生したい場合
・LIBMADライブラリ
DXライブラリPortable
OSLib(OLD School Library)
のどれかを使えばを使えば可能

などなど、便利なプログラムが詰まっているのがライブラリというものです
ライブラリはプログラムソースコードは公開されず、実行ファイルに取り込める形式で提供されており、使い方がヘッダーファイルで提供されています
ライブラリを使う場合は、そのヘッダーファイルに書いてある記述方法に従って、命令を書きます

プログラムの #include記述 でヘッダーファイルをプログラムソースコードに取り込みして、Makefile の LIBS= でライブラリ本体を実行ファイルに取り込みします


ライブラリの使い方参照のために、インクルード記述をするのです
プログラムソースコード
#include <stdio.h>
#include <stdlib.h>
#include <pspkernel.h>
#include <pspdisplay.h>
#include <png.h>

ライブラリはコンパイル時に合体させます
Makefile
LIBS =  -lpsppower -lpng -lpspgum -lpspgu -lz -lc -lm



Makefile に記述する、ライブラリ名称の書き方についてはこちらを参照の事
PSPプログラミング PSPSDK に同梱されているライブラリの一覧とリンク記述
http://nekoyama2gillien.blog36.fc2.com/blog-entry-179.html


ここで、PSPSDKには複数のバージョンがあるという事と、それに伴いライブラリにもバージョンがあるという事を再度書いておきます

例:LIBPNG
libpng は、PNG画像を扱うライブラリで、現在は 1.5.X系列 / 1.4.X系列 のバージョンですが、1.2.X系列 の過去のバージョンもあります

>libpngのページ
http://www.libpng.org/pub/png/libpng.html


サンプルソースコードの 「 libpng > screenshot 」 は、PSPSDK v0.11.2r3 ではコンパイルできませんが、PSPSDK v0.10.0以前ならコンパイルできます

理由
PSPSDK v0.11.2r3 での libpng は 1.5.X系列 / 1.4.X系列 のバージョンですが PSPSDK v0.10.0 以前の libpng は 1.2.X系列 なのです

PSPSDK v0.11.2r3 でサンプルソースコードの 「 libpng > screenshot 」 をコンパイルすると、こういうエラーがでます
main.c:(.text+0x450): undefined reference to `png_set_gray_1_2_4_to_8'

これは、PSPSDK v0.11.2r3 の libpng では廃止された 1.2.X系列特有の命令が含まれているため、です
なので、「 libpng > screenshot 」 は PSPSDK v0.8.10 でならコンパイルが通ります


なお、ライブラリは Makefile の LIBS= に書かれている順番で、左(先頭)から順に追加されてゆきます
DXライブラリPortableOSLibを先頭に記述するのは、DXライブラリPortableOSLibがlibpngなどを呼び出ししているから、です。親と子の関係。

「 libpng > screenshot 」 はソースコードを手直しする必要があります。
MakefileのLIBS=は
LIBS =  -lpsppower -lpng -lpspgum -lpspgu -lz -lc -lm

の順番でないとリンク参照エラーがでるようです


まとめ
PSPSDKのバージョンによって、ライブラリの内容が異なります
ライブラリには取り込む順番があります


関連記事
スポンサーサイト

[edit]

CM: 3
TB: 0

page top

この記事に対するコメント

DXライブラリPrtableは今はlibpngには依存してない。zlibだけのはず

名無しさん #- | URL | 2012/02/05 13:28 * edit *

解説ありがとうございます!

あいうえお #- | URL | 2012/02/05 14:24 * edit *

以前、PNGでスクリーンショットを撮りたくて
サンプルソースをコンパイルしたとき
この記事と同じエラーが出て困りました。
(古いバージョンだとコンパイルできたのか・・・気付かなかった)

v0.11.2r3 で他にも記事と同じようなエラーが起きるのは、
SourceForgeにあるlua-5.1-pspdevpak.exeを
インストールしたときです。
(liblua.aとliblualib.a)

そして、大本のソースからライブラリをコンパイルして
使えるようになったと思ったらSJISしか使えず
UTF8でもう一度コンパイルしなおした記憶があります。

かげさん #- | URL | 2012/02/05 18:35 * edit *

page top

コメントの投稿

Secret

page top

トラックバック

トラックバックURL
→http://nekoyama2gillien.blog36.fc2.com/tb.php/724-869f5fe4
この記事にトラックバックする(FC2ブログユーザー)

page top


h o m e |


 

2016-12