Visual Studio 2008による作成例

  1. WTLを用いたサンプルプロジェクトをビルドするために、WTLをダウンロードしてファイルを展開し、インクルードパスを通しておく必要があります。(WTLのバージョンは7.5で動作確認しています)


  2. Visual Studio 2008で mqsdk.sln を開きます。
    ソリューションファイルはVisual Studio.NET 2002用なので変換するかどうかを要求されますが、変換して開いてください。

  3. メニュー「ファイル」「追加」「新しいプロジェクト」を呼び出します。

  4. プロジェクトの種類「VisualC++ - Win32」からテンプレート「Win32 プロジェクト」を指定し、適当なプロジェクト名を付けます。


  5. この画面では「完了」ではなく「次へ」を選んでください。


  6. アプリケーションの種類として「DLL」を選び、追加のオプションで「空のプロジェクト」をチェックします。これでmqsdkの下にフォルダを持つ新規プロジェクトが作成されます。



  7. 作成したいプラグインと同じタイプのプラグインのCPPファイル(例えばCreateプラグインの場合 Spring.cpp など)をコピーし、ファイル名を変えて保存します。

  8. 保存したCPPファイルと MQInit.cpp をプロジェクトに加えます。

  9. CPPファイルの内容を編集し、独自のプログラムを作成します。この際、MQGetPlugInID()、MQGetPlugInName()などの関数は必ず適当なものに書き換えて下さい。

  10. 作成したプロジェクトの「プロパティ」で、「C/C++」カテゴリ内の「全般」欄の「追加のインクルード ディレクトリ」に「..」を加えます。これでmqsdkフォルダ内に含まれるMQPlugin.hをコピーせずに正常にコンパイルすることが出来るようになります。


  11. また、全般」カテゴリ内の「文字セット」に「マルチバイト文字セットを使用する」を指定します。Unicode文字セットを使用すると、SDKに含まれるソースコードがそのままではビルドが通りません。


  12. 必要に応じてソリューションの設定を「Debug」または「Release」にして、プロジェクトをビルドします。これでプラグインは完成です。

    Express Edition + Platform SDKでWTLを含むプロジェクトをビルドした場合、「LINK : fatal error LNK1104: ファイル 'atlthunk.lib' を開くことができません。」とエラーが発生してリンクに失敗します。Platform SDKに含まれるATLのインクルードファイルatlbase.hの
    PVOID __stdcall __AllocStdCallThunk(VOID);
    VOID  __stdcall __FreeStdCallThunk(PVOID);
    
    #define AllocStdCallThunk() __AllocStdCallThunk()
    #define FreeStdCallThunk(p) __FreeStdCallThunk(p)
    
    #pragma comment(lib, "atlthunk.lib")
    
    をコメントアウトして
    #define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONS,sizeof(_stdcallthunk))
    #define FreeStdCallThunk(p) HeapFree(GetProcessHeap(),0,p)
    に置き換えることで回避できるようです。

  13. Debug用として作成した場合は、プロジェクトのプロパティの「デバッグ」カテゴリ内の「コマンド」にMetaseq.exeを選びます。これで作成したDLLのデバッグを行うことができます。