2008-02-27

#includeの順番

SDKの POOM(Pocket Outlook Object Model)のサンプルを覗いてみました。
POOMを利用することで、連絡先や予定表のデータを扱うことができるようです。
 
なかなか便利そうなのですが、1つ問題が...
// Init COM
hr = CoInitializeEx(NULL, 0);   
CHR(hr);
  
// Create the POOM COM object.
hr = CoCreateInstance(CLSID_Application, NULL, CLSCTX_INPROC_SERVER, 
    IID_IPOutlookApp2, (LPVOID *) &g_pPoom);
CHR(hr);
CBR(NULL != g_pPoom);

// Logon to POOM. 
hr = g_pPoom->Logon(NULL);
CHR(hr);
 
またCOMか(苦笑
なかなか道は険しそうですね。
 
最初 できるだけCOMを避けながらサンプルを試していたのですが、それだと何もできそうにないので仕方なくサンプルコードを貼り付けてみました。
するとサンプルをそのまま使っているのに何故かリンクエラーになります。
error LNK2001: 外部シンボル "CLSID_Application" は未解決です。
error LNK2001: 外部シンボル "IID_IPOutlookApp2" は未解決です。
 
しばらく試行錯誤した結果、#includeの順番が悪いという事に気付きました。
最後まで COMを避けていた関係で、initguid.hを 最後に #includeしていたのですが、これだとエラーが出るようです。
#include <initguid.h>  // pimstore.hよりも先に #includeしないとダメ
#include <pimstore.h>
#pragma comment(lib, "pimstore.lib") 
// #include <initguid.h>
 
自分の中でどんどんCOMは面倒というイメージができていきます(笑。
やさしい入門書を探してみないといけませんね。
 

0 件のコメント: