SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

オープンソースC++用クラスライブラリPOCO活用講座

POCO::Netライブラリによる組み込みWebサーバの実装

オープンソースC++用クラスライブラリPOCO活用講座(1)


  • X ポスト
  • このエントリーをはてなブックマークに追加

POCOの構築

 本記事では、Windows上のVC 2005 Expressを用いて構築する方法を説明します。その他のプラットフォームでの構築方法は、「README」ファイルを参照してください。

 Visual Studio 2003か2005の環境であれば、「build_vs71.cmd」か「build_vs80.cmd」をそのまま実行するだけで構築が可能です。これらのcmdファイルは、すべてのコンポーネントを一括してコンパイルするスクリプトになっています。

 Expressエディションの場合は、上位エディションにある一部のコマンドラインツールが含まれていないので、スクリプトがそのままでは動作しません。

 今回は、コンポーネントごとに、手作業でコンパイルしてみましょう。といっても、難しくはありません。

 まずは、基本となるFoundationコンポーネントです。Foundationフォルダ直下にある、ソリューション・ファイルを利用します。VC 2005 Expressを起動し、Foundation_vs80.slnファイルをオープンします。

 ソリューションには、以下のように4つのプロジェクトが含まれています。なお、testで始まっているものは、単体テストフレームワークであるCppUnitに対応した単体テスト用プロジェクトです。これらはクラスライブラリの利用には不要ですので、コンパイルも不要です。

ソリューションエクスプローラ画面
ソリューションエクスプローラ画面

ビルド

 ビルドメニューから、[バッチビルド]を選択します。

ビルドメニュー画面
ビルドメニュー画面

 スタティックライブラリ形式とDLL形式の、2種類のライブラリが作成可能です。ここでは、DLLを作ってみます。「debug_shared」と「release_shared」のところのビルド欄にチェックしてビルドしてください。

 コンパイル中、「Format.h」ファイルで「表示できない文字を含んでいます」という警告が出ます。この警告は、コメント内の文字のことですので、無視してかまいません。

 コンパイルが完了すると、「Foundation」フォルダと同列の位置にある「bin」フォルダに、リリース用とデバッグ用のDLLができているはずです。同様に、「lib」フォルダに、インポートライブラリが生成されます。

 残りのコンポーネントも、同じようにコンパイルします。「bin」フォルダに、すべてのDLLファイルが生成されるので、このフォルダのパスを、環境変数のPATHに登録しておくと便利です。

POCOの使い方

 基本的には、必要なヘッダファイルをインクルードするだけで利用できます。ライブラリの情報をリンカ設定に記述する必要はありません。自動的に適切なライブラリがリンクされます。

 ヘッダやライブラリのパスは、毎回プロジェクトごとに設定しても構いませんが、あらかじめ設定しておくと便利です。VC 2005 Expressのツールメニューにあるオプション画面で設定します。

オプション画面
オプション画面

 インクルードファイルには、以下のパスを追加します。

  • C:\Lib\Poco\Foundation\include
  • C:\Lib\Poco\Util\include
  • C:\Lib\Poco\XML\include
  • C:\Lib\Poco\Net\include

 ライブラリファイルには、「C:\Lib\Poco\lib」を追加します。

HTTP Timeサーバ

 各コンポーネントのフォルダ直下に、「samples」というフォルダがあり、クラスライブラリを利用したサンプルソースがいくつか含まれています。今回は、NetコンポーネントのサンプルであるHTTPTimeServerソースを改造して、Webサーバを作ります。

ビルドと実行

 まずは、サンプルそのままをコンパイルしてみましょう。「samples」フォルダのHTTPTimeServerにある、「HTTPTimeServer_vs80.vcproj」というプロジェクトファイルをオープンします。ちなみに、Pocoのサンプルソースはすべて、Javaを意識した形になっており、クラス定義と実装部分が1ファイルにまとまっています。

 リリースまたはデバッグモードでビルドすると、「bin」フォルダに実行ファイルが生成されます。基礎の4つのコンポーネントすべて使用しますので、DLLファイルのパスを通すか、DLLファイルを実行ファイルと同じ「bin」フォルダにコピーしてください。

 「HTTPTimeServer.exe」を起動してみましょう。[デバッグ]メニューの、[デバッグ開始]か[デバッグなしで開始]を選択します。

 サーバ側の起動はこれで終わりです。次に、クライアントであるブラウザを起動してみましょう。URL欄に「http://localhost:9980/」と入力してください。

 ブラウザに現在時刻が表示されましたね。自動で再読み込みされ、時刻が更新され続けます。同時に、サーバ側のプロンプト画面に接続先の情報が表示されます。

動作画面
動作画面

次のページ
カンタンWebサーバを作る

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
オープンソースC++用クラスライブラリPOCO活用講座連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 高江 賢(タカエ ケン)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1792 2007/11/20 13:20

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング