Visual Studio 2005による作成例

  1. Visual C++ 2005 Express EditionはそのままではWin32プロジェクトを作成することができません。
    まず始めにPlatform SDKをインストールする必要があります。インストールの方法はMicrosoftのVisual Studio 2005に関するWebサイトに記載がありますので、そちらをご参照ください。corewin_express.vspropsとAppSettings.htmもWebサイトの記載に従って内容を編集してください。
    Platform SDKインストール後に、[ツール]-[オプション]で「VC++ディレクトリ」に適切なインクルードファイルとライブラリファイルを指定する必要があります。
    また、WTLを用いたサンプルプロジェクトをビルドするために、WTLのパスも通しておく必要があります。
    Express Edition以外のVisual Studio 2005の各エディションではWTLのインクルードファイルのパスを通すだけでOKです。




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

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

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


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


  6. アプリケーションの種類として「DLL」を選び、追加のオプションで「空の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のデバッグを行うことができます。