いつもここを参考に勉強しております。
(環境:VC++2005 SP1 MFC使用 WindowsXP SP2)
Mailソースの操作を行いたくてCodeProjectというサイトにて
以下のページを見つけました。
http://www.codeproject.com/com/Outlook_Express_Messages.asp
ここのソースについてはちゃんとビルドできたのですが、
これを参考にいざ自分のプロジェクトでIMimeMessageを使おうとしますと
QueryInterfaceの箇所で、
-------------------------------------------------------------------------
sampleDlg.obj : error LNK2001: 外部シンボル "_IID_IMimeMessage" は未解決です
Debug/sample.exe : fatal error LNK1120: 外部参照 1 が未解決です。
-------------------------------------------------------------------------
とエラーが出てしまいます。IMimeMessageの宣言だけですと通りますが、
IID_IMimeMessageを使おうとするとなぜかエラーになります。
(CodeProjectの方はIID_IMimeMessageを使っていますがエラーになりません)
自分のプロジェクトが込み入っているのでどこか別のとこの
エラーかなと思い、とりあえず新規にダイアログプロジェクトを
作ってそこにも入れて試してみましたが、やはり同じリンクエラーに
なってしまいます。
ビルドを通したい部分のソースです
-------------------------------------------------------------------------
#include "msoeapi.h"
#include "mimeole.h"
#include <shlwapi.h>
IStream *pStream = NULL;
::SHCreateStreamOnFile("c:\\mailsrc.eml", STGM_WRITE, &pStream);
IMimeMessage* pMimeMessage = NULL;
pStream->QueryInterface(IID_IMimeMessage, (LPVOID*)&pMimeMessage);
// --メッセージ操作--
pMimeMessage->Release();
pStream->Release();
-------------------------------------------------------------------------
どうやってもCodeProjectのソースのようにビルドできません…
どなたか解決方法をご存知の方いらっしゃいますでしょうか?
zip全部見るの面倒だから見てない。
リンクし忘れかマクロ定義し忘れか#includeし忘れだな。
リンクについては見てない人のプログラムなので知らん。
#includeとかで定義すると複数でそれを#includeしていると
同じ名前のが複数定義しているよエラーになるかもしれんから
普段は宣言のみで定義しないように出来ているとか。
wclrpさん、御返事ありがとうございます。
CodeProjectの方のファイルを再度見直してみましたところ、
#include <initguid.h>
が抜けていたために、ビルドできていませんでした…
目を凝らして見ないといけないですね。
非常に勉強になりました。
これで次のステップにすすめます!
ありがとうございました。
ツイート | ![]() |