2009-10-19

先日入れたVC++2005にWTLをインストール

WTL、実はあんまり使わないのだけど、一応インストール。

ここよりWTL81_9127.zipを持ってくる。あと日本語化のために、ここより、WTL81_9127_ja.zipをいただいてくる。

で、C:\Program Files\WTL81 あたりに解凍し、"C:\Program Files\WTL81\AppWiz\setup80x.js"を実行する。これで一応インストール完了。

ただし、このままだとコンパイルエラーが出るときがあるらしいので(PlatformSDKのATLが古いらしい)、以下のように修正する。(diffなんて使ったのは何年振りだろうか??)

%MSSdk%\Include\atl\atlwin.h
>> diff -c atlwin_ORG.h atlwin.h
>> diff -c atlwin_ORG.h atlwin.h
*** atlwin_ORG.h Fri Mar 03 23:19:14 2006
--- atlwin.h Tue Oct 20 09:52:40 2009
***************
*** 1750,1756 ****

// search for an empty one

! for(i = 0; i < m_aChainEntry.GetSize(); i++)
{
if(m_aChainEntry[i] == NULL)
{
--- 1750,1756 ----

// search for an empty one

! for(int i = 0; i < m_aChainEntry.GetSize(); i++)
{
if(m_aChainEntry[i] == NULL)
{
"int"を追加。

%MSSdk%\Include\atl\atlbase.h
>> diff -c atlbase_ORG.h atlbase.h
*** atlbase_ORG.h Fri Mar 03 23:19:12 2006
--- atlbase.h Mon Oct 19 15:26:45 2009
***************
*** 284,289 ****
--- 284,290 ----
};
#pragma pack(pop)

+ /* http://www.codeproject.com/KB/wtl/WTLExpress.aspx
PVOID __stdcall __AllocStdCallThunk(VOID);
VOID __stdcall __FreeStdCallThunk(PVOID);

***************
*** 291,296 ****
--- 292,301 ----
#define FreeStdCallThunk(p) __FreeStdCallThunk(p)

#pragma comment(lib, "atlthunk.lib")
+ */
+
+ #define AllocStdCallThunk() HeapAlloc(GetProcessHeap(), 0, sizeof(_stdcallthunk))
+ #define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p)

#elif defined (_M_AMD64)
#pragma pack(push,2)

"PVOID ..."から"#pragma"までコメントアウトして、下2行を追加。

情報源は、ここ

0 件のコメント: