XPMライブラリを使うときは、X11/xpm.hをインクルードします。 なぜかxが小文字です。注意して下さい。
コンパイルする時はlibXpmをリンクします。 こっちのXは大文字です。 これ以降のサンプルソースをコンパイルする時は、FreeBSDだと次のようになります。
$ cc -o sample1 sample1.c -lXaw -lXmu -lXt -lXpm -lX11 -L/usr/X11R6/lib -I/usr/X11R6/include
sample1.cは、 コマンドラインで指定したXPMファイルを表示するプログラムです。
XPMファイルを読み込んでPixmapを作るには、XpmReadFileToPixmap関数を 使用します(25行目)。
int XpmReadFileToPixmap( Display *display, Drawable d, char *filename, Pixmap *pixmap_return, Pixmap *shapemask_return, XpmAttributes *attributes );
pixmap_returnおよびshapemask_returnは、必要ない時はNULLを 指定します。この例ではマスクは使っていません。また、attributesも、 使用しない時はNULLを指定します。
sample2.cは、 ソースにインクルードされたXPMデータを表示します。
文字列の配列(char*の配列、前の版でcharの2次元配列と書いたのは勘違いでした)から Pixmapを作るには、XpmCreatePixmapFromData関数を使用します(22行目)。
int XpmCreatePixmapFromData( Display *display, Drawable d, char **data, Pixmap *pixmap_return, Pixmap *shapemask_return, XpmAttributes *attributes );
ソース中のsample2_xpmは、sample2.xpm の中で定義されている配列の名前です。
char *XpmGetErrorString( int errcode );