Windows

Windows 7 (x64)でもDeleGateは正常動作する

仕事の都合で、HTTP Proxyサーバが必要になったので、その場の検索で見つけたWindows版Squidを使って見たが、少なくともデフォルトではログがリアルタイムで出力されないために、プログラムがProxyサーバを経由して通信しているのかどうかが直ぐに分からなく…

現時点でもダウンロードだけはまだできる「Visual Studio 2005 Express Edition」

未だにWindows 2000 Workstationを使用しているので、Visual Studio 2005 Express Editionをダウンロードして置けばよかったと後悔しながら、どこかに存在しないものかと探していたところ、MicrosoftのサイトにはISOファイルが残っていることが分かった(参…

Perl - XSでDLLを呼び出す(その9)

今回は複数の戻り値を返すサブルーチンを実装する。 複数の戻り値を持つサブルーチンの書き方 実装に入る前に、戻り値が複数存在するサブルーチンの書式を概ね把握して置こう。その書式は以下のようになる。 void <サブルーチン名>(<引き数名列>) INPUT: <引…

Perl - XSでDLLを呼び出す(その8)

今回は複数の実数を足した結果を返すサブルーチンを実装する。 新しいモジュールを準備する 練習がてら、「その3」を参考に新しいExample3モジュールを準備する。 2つの実数を足した結果を返す 引き数で指定された2つの実数を足して、その結果を返すサブルー…

Perl - XSでDLLを呼び出す(その7)

今回はここまで分かったことのまとめを行う。 固有マクロ XSサブルーチン内で使用するための以下のマクロが存在する。 STマクロXSサブルーチンに渡された引き数をスタックから取り出す。 SvIVマクロSV(Scalar Value)を整数に変換する。 SvNVマクロSVを実数…

BATファイルで簡易電卓を作る

Perlでは以下の大変短いコードで「$a = 10」、「$b = sqrt($a)」のように使う簡易的な関数電卓を作ることができる。 while (<>) { $r = eval; print (($@) ? $@ : "$r\n"); } 実はBATファイルでもある程度短いコードで「a = 10」、「b = a + 20」のように変…

Perl - XSでDLLを呼び出す(その6)

今回は渡された文字列を返すサブルーチンを実装する。 渡された文字列を返す 引き数で指定された文字列をそのまま返すサブルーチンをExample2.xsに追加で実装する。 char * echo_pv(s) INPUT: char *s; CODE: RETVAL = s; OUTPUT: RETVAL以下の点がecho_ivや…

Perl - XSでDLLを呼び出す(その5)

今回は渡された実数を返すサブルーチンを実装する。 渡された実数を返す 引き数で指定された実数をそのまま返すサブルーチンをExample2.xsに追加で実装する。 NV echo_nv(n) INPUT: NV n; CODE: RETVAL = n; OUTPUT: RETVAL以下の点がecho_ivサブルーチンと…

Perl - XSでDLLを呼び出す(その4)

今回はXSの仕組みに迫って見ようと思う。 XSファイルの行方を探る Windowsにおいて、XSファイルは最終的にDLLファイルに変換される。これを実現しているのは、XSUBPPと言うXSファイルをCファイルに変換するプリプロセッサと、Microsoft Visual C++と言うコン…

Perl - XSでDLLを呼び出す(その3)

今回は簡単なサブルーチンを実装して見る。 新しいモジュールを準備する 以下のコマンドで新しいモジュールを準備する。 > cd /d c:\xs > h2xs -n Example2 > cd Example2出来上がったExample2.xsは以下の内容である。なお、行頭に ">" の付いた行は各エリア…

Perl - XSでDLLを呼び出す(その2)

前回の続きとして、作成したExample1モジュールを使って見る。 インストールする前に使用する 以下のスクリプトを "c:\xs\Example1\TestEx1.pl" として保存する。 use ExtUtils::testlib; # @INCにblib\archとblib\libを追加する use Example1; print TEST_C…

- Perl - XSでDLLを呼び出す(その1)

PerlにC/C++で作成したプログラムを組み込むためには、XSインターフェースを実装したモジュールを作成する。XSインターフェースの概念を説明すると長くなるし、私自身が完璧に理解している訳ではないので、こうすれば良いと言う方法を主に説明することにする…