読者です 読者をやめる 読者になる 読者になる

グラフ描画ライブラリ"PLplot"のインストール

PLplot(http://plplot.sourceforge.net/index.html)は二次元、三次元グラフの描画ライブラリ。
ライセンスがLGPLな為、条件付きながら商用アプリにも使えるかも。
こいつをWindowsにインストールするための覚え書き。対象は何故かVisualC++ 2005。
ただし、C言語用インターフェース限定ながら、C++BuilderでもOKっぽい。

必要なもの

CMake
CMake (http://www.cmake.org/HTML/Index.html)はクロスプラットフォームGUI付きなmake。感じとしてconfigure+makeっぽい。これはこれで、いじり甲斐がありそう。
LibGD
LibGD(http://www.libgd.org/)は、画像ファイル(jpeg, gif, png)の生成ライブラリ。
Windows用バイナリ(http://www.boutell.com/gd/http/gdwin32.zip)はMinGWでこしらえているので、同梱の「makemsvcimport.bat」を実行して、VC++でリンクできるようにする。ちなみに、中身はこんな感じ。
@echo Creating bgd.lib
lib /machine:i386 /def:bgd.def
@echo Done. You can now link to the bgd.lib import library from MSVC.
C++Builderならばimplibでいけるはず。

ビルド

src\plctrl.cの1475行に記述されている関数"strcat_delim"に問題があるので、当該部分を修正する。

/*--------------------------------------------------------------------------*\
 * void strcat_delim()
 *
 * Append path name deliminator if necessary (does not add one if one's
 * there already, or if dealing with a colon-terminated device name).
\*--------------------------------------------------------------------------*/

static void
strcat_delim(char *dirspec)
{
    int ldirspec = strlen(dirspec);
#if defined (MSDOS) || defined(WIN32) // ←"defined(WIN32)"を追加
    if (dirspec[ldirspec-1] != '\\')
	strcat(dirspec, "\\");
#elif defined (macintosh)
    if (dirspec[ldirspec-1] != ':')
        strcat(dirspec, ":");
#else           /* unix is the default */
    if (dirspec[ldirspec-1] != '/')
	strcat(dirspec, "/");
#endif
}
Visual Studio 2005 コマンド プロンプト」を開き、 アーカイブを展開したフォルダで以下のコマンドを実行。
md buildnmake
cd buildnmake
set GDLIBDIR=C:\lib\gdwin32
set CMAKE_INCLUDE_PATH=%GDLIBDIR%
set CMAKE_LIBRARY_PATH=%GDLIBDIR%
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install .. 
nmake
nmake install
※1 GDLIBDIRの値はLibGDを展開したフォルダ。
※2 コンパイル時にdrivers\wingcc.cの567行でコケるので、要修正。
AppendMenu(dev->PopupMenu, MF_STRING, PopupPrint, "Print");
AppendMenu(dev->PopupMenu, MF_STRING, PopupNextPage, "Next Page..."); // ←3点リーダ(0x85)が不正キャラクタ扱いになる
AppendMenu(dev->PopupMenu, MF_STRING, PopupQuit, "Quit");

installフォルダの下に、bin、include、lib、shareが出来るので、これらを任意のフォルダにコピーする。

配布

installフォルダの下にある"bin"、"include"、"lib"、"share"を配布する。DLLの検索パスは注意すること。
また、環境変数としてPLPLOT_HOMEにインストール先フォルダ、PLPLOT_LIBに、%PLPLOT_HOME%\share\plplot5.8.0\を設定する。