libnmz2.0.18.003-win64.zip 公開 ― 2008年10月11日 06時52分05秒
libnmz2.0.18.003-win64.zip をブルー会員エリアで公開しました。
Visual C++ 2005 でコンパイルした nmz.dll (x64版, IA64版)です。 libnmz2.0.18.003-win64.zip では GNU libiconv のバージョン 1.12-ja-4 (日本語エンコーディングパッチをあてたもの)をリンクしました。
Visual C++ 2005 でコンパイル可能な nmz.dll を用いた簡単な検索プログラムのサンプル付きです。 nmz.dll を用いた検索プログラムを C 言語で作成したい方には参考になるでしょう。
https://www.akaneiro.jp/members/blue/libnmz2.0.18.003-win64.zip
- 古いバージョンの Namazu for Windows (x64版, IA64版)をご利用の方は最新版の Namazu for Windows (x64版, IA64版)にバージョンアップしてください。 nmz.dll は本アーカイブの nmz.dll に差し替えてください。
- 次の Namazu for Windows (x64版,IA64版)のアーカイブからは、この Visual C++ 2005 でコンパイルした nmz.dll に変更する予定です。
- nmz.dll を使ったアプリケーションを作成する場合には「libnmz API Windows 版 初級編」(ダウンロード販売中)を参考にしてください。
関西限定なまずもっこり根付ストラップ ― 2008年10月12日 10時02分02秒
ブルー会員IDの有効期限の訂正 ― 2008年10月13日 18時22分20秒
ダウンロード販売中のブルー会員ID添付ドキュメントに記載しております有効期限に誤りがありましたので、これを訂正いたします。
誤り
有効期限: 2008/06/1~2008/10月末日
正しくは
有効期限: 2008/06/1~2008/11月末日
です。お詫びして訂正させていただきます。
現在販売しておりますIDのドキュメントは修正済みです。
「有効期限: 2008/06/1~2008/10月末日」のIDをご購入されましたブルー会員の方はそのまま 2008/11月末日 まで使用できます。ご安心ください。
メカブー携帯ストラップ ― 2008年10月15日 12時26分54秒
SWIG を使ってみよう! [第5回] ActivePerl 編(Windows版) ― 2008年10月17日 01時56分59秒
SWIG を使って libnmz の様々なバインディングを作成してみましょう。 今回は Windows で nmz.dll を使うサンプルです。
UNIX 環境でも行った libnmz の nmz_get_version を呼び出す Perl バインディングを Windows 環境で動かしてみましょう。(ActivePerl)
nmz_get_version は、namazu/libnamazu.h に定義されています。
extern char *nmz_get_version();
この関数は libnmz の Namazu のバージョンを文字列で返す関数です。 (Namazu 2.0.13 以降利用可能です。libnmz のバージョンを返すわけではありません。)
今回はこれを Perl から呼び出す Perl バインディングを作成してみましょう。 (libnmz の Perl バインディングとしては Search-Namazu がありますが、現在の Search-Namazu は nmz_get_version に対応していません。)
モジュール名を決めます。ここでは Sample というモジュール名にします。 SWIG 用インターフェイスファイルを Sample.i という名前で作成します。
%module Sample %{ #include "namazu/libnamazu.h" %} char *nmz_get_version();
swig コマンドを使ってラッパ用コードを生成します。
C:\> swig -perl5 Sample.i
実行すると Sample_wrap.c が生成されます。
次に Perl 用モジュールを作成するために Makefile.PL を用意します。
use ExtUtils::MakeMaker; WriteMakefile( 'NAME' => 'Sample', 'INC' => '-IC:/namazu/include', 'LIBS' => '-LC:/namazu/lib -lnmz', 'OBJECT' => 'Sample_wrap.obj' );
Makefile.PL から Makefile を作成します。
C:\> perl Makefile.PL
コマンドラインでコンパイルを行うため vsvars32.bat を実行します。
C:\> "\Program Files\Microsoft Visual Studio 8\VC\bin\vsvars32.bat"
nmake を実行します。
C:\> nmake
Sample モジュール(Perl バインディング)が作成されました。
インストールして使うこともできますが、ここではカレントディレクトリにコピーして使ってみましょう。
C:\> copy blib/arch/auto/Sample/Sample.dll .
Sample モジュールを呼び出す Perl プログラム main.pl を作成します。
#!/usr/bin/perl use Sample; print Sample::nmz_get_version() . "\n";
このプログラムは nmz_get_version の値を表示するだけの単純なプログラムです。 実行すると、Namazu のバージョンが表示されます。
C:\> perl main.pl 2.0.18
非常に簡単な例ですが、SWIG を使って libnmz(nmz.dll) を Perl から利用する方法をしめしました。他の関数も同様に呼び出すことが可能です。いろいろと工夫してみてください。ここでは Perl を使いましたが Java 等の SWIG がサポートしている他の言語から利用することもできます。
[お断り]
- SWIG Version 1.3.36 を使用しました。
- ActivePerl ビルド 800番台 を使用しました。
- Namazu 2.0.18 を使用しました。(libnmz2.0.18.003-win32.zip に含まれる nmz.dll を使用)
- Visual C++ 2005 SP1 を使用しました。
- libnmz は GPL ライセンスです。libnmz を動的であれ、静的であれリンクして使用するプログラムは GPL ライセンスと矛盾しないライセンスである必要があります。
- SWIG を用いて作成した Sample モジュールは nmz.dll をリンクしますので、GPL ラインセンスとして公開します。
- Sample モジュールは GPL ライセンスですので、Sample モジュールを利用するプログラムは GPL ライセンスと矛盾しないライセンスでなければなりません。ご注意ください。
めかぶスープ ― 2008年10月18日 00時40分06秒
SWIG を使ってみよう! [第6回] Java 編(Windows版) ― 2008年10月20日 23時28分59秒
SWIG を使って libnmz の様々な言語用のバインディングを作成してみましょう。
今回は Windows 環境で Java から libnmz の nmz_get_version を呼び出すことを考えます。
モジュール名は前回と同じ Sample とします。 SWIG 用インターフェイスファイルを Sample.i という名前で作成します。 中身は前回と全く同じです。
%module Sample %{ #include "namazu/libnamazu.h" %} char *nmz_get_version();
swig コマンドを使ってラッパ用コードを生成します。 今回は Java 用ですので引数に -java を指定します。
C:\> swig -java Sample.i
実行すると Java 用の Sample_wrap.c と Sample.java, SampleJNI.java が生成されます。 (JNI を用いて C ライブラリを呼び出します。)
javac で Sample.java, SampleJNI.java をコンパイルします。
C:\> javac Sample.java SampleJNI.java
Sample.class, SampleJNI.class が生成されます。
コマンドラインでコンパイルを行うため vsvars32.bat を実行します。
C:\> "\Program Files\Microsoft Visual Studio 8\VC\bin\vsvars32.bat"
次に Sample_wrap.c をコンパイルします。 (ここでは J2sdk1.4.2_17 での例をしめします。)
C:\> cl /LD Sample_wrap.c /I c:\j2sdk1.4.2_17\include /I c:\j2sdk1.4.2_17\include\win32 /I c:\namazu\include /link /OUT:Sample.dll C:\namazu\lib\nmz.lib
Java バインディングの Sample モジュール(Sample ライブラリ)が作成されました。
インストールして使うこともできますが、ここではカレントディレクトリに生成したライブラリをそのまま使ってみましょう。
Sample ライブラリを呼び出す Java プログラム を main.java という名前で作成します。
public class main { static { try { System.loadLibrary("Sample"); } catch (UnsatisfiedLinkError e) { System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e); System.exit(1); } } public static void main(String argv[]) { // Print out the value of some enums System.out.println(Sample.nmz_get_version()); } }
このプログラムは nmz_get_version の値を表示するだけの単純なプログラムです。コンパイルして main.class を生成します。
C:\> javac main.java
実行すると、Namazu のバージョンが表示されます。 カレントディレクトリにある Sample ライブラリを利用するため、引数でパスを指定しています。
C:\> java -Djava.library.path=. -cp . main 2.0.18
非常に簡単な例ですが、SWIG を使って libnmz(nmz.dll) を Java から利用する方法をしめしました。 モジュールの生成方法は各言語ごとに異なりますが、 Perl の時に使ったものと同じインタフェースファイルから作成できることが分かったかと思います。 他の言語でも同じように利用することができますので、いろいろと工夫してみてください。
[お断り]
- SWIG Version 1.3.36 を使用しました。
- java version "1.4.2_17" を使用しました。
- Namazu 2.0.18 を使用しました。(libnmz2.0.18.003-win32.zip に含まれる nmz.dll を使用)
- Microsoft Visual C++ 2005 SP1 を使用しました。
- libnmz は GPL ライセンスです。libnmz を動的であれ、静的であれリンクして使用するプログラムは GPL ライセンスと矛盾しないライセンスである必要があります。
- SWIG を用いて作成した Sample モジュールは libnmz をリンクしますので、GPL ラインセンスとして公開します。
- Sample モジュールは GPL ライセンスですので、Sample モジュールを利用するプログラムは GPL ライセンスと矛盾しないライセンスでなければなりません。ご注意ください。
Visual Studio 2008 Service Pack 1 ― 2008年10月31日 03時43分12秒
Visual Studio 2008 Service Pack 1 が公開されています。
http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/vs2008/sp1/
ただし、無償版のVisual Studio 2008 Express Edition のSP1は単体では提供されていませんので、Visual Studio 2008 Express Edition をアンインストール後、Visual Studio 2008 Express Edition SP1 をインストールしてください。
最近のコメント