簡単に nmz.dll を作成するための Makefile の修正2005年11月23日 02時04分00秒

Namazu for Win32 には VC++ で作成した nmz.dll が含まれますが、VC++ でnmz.dll をコンパイルするのはいろいろと面倒です。
そこで、MinGw でも DLL は作成できるので、Win32 環境(MinGw)で nmz.dll を簡単に作れるように Makefile.am を修正しました。

C:\> cd nmz
C:\> make dll

で、
  • nmz.dll ... gcc で作成した DLL
  • nmz.def ... DEF ファイル
  • libnmz.a .. MinGw 用 DLL インポートライブラリ
が nmz/ ディレクトリに作成できます。
MinGw で nmz.dll を使うのであればこれだけで利用できます。
また、VC++ から nmz.dll を使うには lib.exe (VC++ または Platform SDK の Core SDK に含まれる)が必要になりますが、

C:\> make implib

で、
  • nmz.lib ... VC++ 用 DLL インポートライブラリ
が nmz/ ディレクトリに作成されます。 ただし、Win32以外の環境で make dll, make implib を実行するとエラーになります。


1) MinGw で nmz.dll を使うには

/* main.c */
#include 
#include "libnamazu.h"

main()
{
    fprintf(stdout, "%s\n", nmz_get_version());
}

という main.c ファイルの場合、次でコンパイルできます。

C:\> gcc main.c -o main.exe -Lライブラリディレクトリ -lnmz

libnmz.a ファイルをライブラリディレクトリに入れてコンパイルし、nmz.dll をパスの通ったところに入れた上で実行ファイルを実行する必要があります。


2) VC++ で nmz.dll を使うには

C:\> cl main.c /link /out:main.exe パス/nmz.lib

nmz.lib のパスを指定してコンパイルし、nmz.dll をパスの通ったところに入れた上で実行ファイルを実行する必要があります。