開発環境
以下のコンパイラでの開発を確認しています。
・Microsoft VisualC++ 6.0 (以下、VC6)
・Borland C++ BuilderX 1.0 (以下、CBX1.0)
・Borland Delphi 6
C++に関しましては他のWindows用32bitC++コンパイラでも問題ないかと思います。
導入方法
同梱のヘッダファイル(cpxsdk.h または cpxsdk.pas)を、コンパイラのインクルードパス上に置くだけです。
CPXの基本構造
CPXは構造としてはWindows用の32bitDLLであり、COM(Component Object Model)インターフェースを介してアクセスされます。
COMはシンプルでかつ高機能な仕組みで、実装にはルールに従っていただく必要がありますが、 テンプレートファイル及びサンプルソースファイルを参考にすれば、それほど難しくはありません。
CPXが使用するCMNの機能も、COMインターフェースを介してアクセスします。
【CMNとCPXの関係の概念図】
CPXのファイル名
ファイル名は cmn_ で始まり、拡張子は .cpx とします。
コンパイル/リンク
スレッドセーフなマルチスレッド対応の32bitDLLを作成します。
グローバル変数(外部変数/extern変数/static変数)などは使用できません。
変数は、クラスのメンバ変数またはスタック上のローカル変数のみを使用してください。
構造体メンバのアライメントは8byteです。
cpxCreateInstance という関数のみエクスポートします。
エクスポート名は cpxCreateInstance で、序数値や装飾名は不要です。
[VC6の場合]
プロジェクトに「Win32 Dynamic-Link Library」を指定します。
コンパイルオプションに /MD (マルチスレッド) 及び /Zp8 (アライメント8byte:デフォルト) が必要です。
モジュール定義ファイル(.def)を使用してDLLを作成します。__declspec(dllexport) は使用できません。
[CBX1.0の場合]
コンパイルオプションに -tWM (マルチスレッド) 及び -a8 (アライメント8byte) が必要です。
リンクオプションに /Tpd (DLL) が必要です。
モジュール定義ファイル(.def)を使用してDLLを作成します。__declspec(dllexport) は使用できません。
[Delphiの場合]
[プロジェクト]メニューの「オプション」の[コンパイラ]タブで 「構造体データの配置」を"8"にします。
「IsMultiThread := True;」はcpxsdk.pasに定義済みです。
デバッグ
DLLをデバッグ可能なコンパイラ付属のデバッガによりデバッグ可能です。
また、CMNのオプション[その他]の「エクステンションをデバッグする」をチェックすることにより、 CMNから渡されたメモリの開放漏れ(メモリリーク)を検出することが可能です。
巡回対象
CPXSDKでは標準でhttpプロトコルによる通信を搭載していますので、 httpでアクセスできるサイトはどこでも巡回することが可能です。
http以外のプロトコル(smtp/pop3/ftp等)はCPX側で独自に実装することにより対応することが可能です。
CPXはCMNのフォルダに関連付けられますので、 同じような構造の情報(同じ系統の掲示板等)を一つのCPXで複数対応すると、 ユーザーの使い勝手がよくなります。