VisualC++2008ExpressEdition×WTL8.0Finalの四苦八苦
Visual C++ 2008 Express EditionでWTLを初めてみようと思いました。
ええ、かなり苦労しましたとも。そしてこれは、そのまとめ。
必要なもの
PlatformSDK(以下PSDK)は、普通はx86のやつでしょうね。
入手先は下を見てください。
入手先とパスの設定
入手先、設定は、こちらのブログの記事の下のほうを見てくださいませ。
http://www.sfc.wide.ad.jp/~irino/blog/2008/09/visual-c-2008-expressappwizwtl8.php
インスコールの作業の説明は省略します。
"定義されていない識別子"などと言われます。
昔はOKだった書き方が最近ではダメになったからだそうです。
エラーになったファイルを開いて(atlなんとか.h だった気がする)、
for(i = 0; ・・・)
を
for(int i = 0; ・・・)
に書き換えてください。
atlthunk.libがない
無いものは無いのだと思います。
こちらのサイトを参考に、atlbase.hを改造。
http://www.eml.ele.cst.nihon-u.ac.jp/~momma/wiki/wiki.cgi/Windows/VisualC/Platform%20SDK.html#h7
09/02/05 追記
一応情報保護のために引用しておきます。
後でエラーが出るので先にatlbase.hを弄っておく。 cannot open file 'atlthunk.libに載ってた。
/* 以下をコメントアウト PVOID __stdcall __AllocStdCallThunk(VOID); VOID __stdcall __FreeStdCallThunk(PVOID); #define AllocStdCallThunk() __AllocStdCallThunk() #define FreeStdCallThunk(p) __FreeStdCallThunk(p) #pragma comment(lib, "atlthunk.lib") */ // Heap系に置き換えてみたり 下のIA64はこうなてたからいいかな・・・ #define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),0,sizeof(_stdcallthunk)) #define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p)一応情報保護のため引用しておく。
LNK1123 オブジェクトまたはリソースを COFF (Common Object File Format) に変換できませんでした。
どうやら、プロジェクト内の .rc というファイル内のマニフェストファイル関係の部分を//でコメントアウトすると、うまくいくようです。
勝手な想像ですが、そのファイルがVC++2008EEにまるで対応していないんじゃないでしょうか。
コメントアウトしてうまくいくなんて怖いです。なんなんでしょうか。。。
あとがき
必死にやっていたもので、作業内容をあまり覚えてません。
ごめんなさい。自分でも悪いやり方だったと思ってます。
また、嘘が混じってるかもしれません。その時もごめんなさい。
最後に、今回紹介させていただいた記事を書いてくださった方々に感謝します。
*1:R2とは違う、SP1というのもあるけど、そっちは未確認。