DisableThreadLibraryCalls は CRTを静的リンクする場合は呼んではならない [プログラミング]
http://support.microsoft.com/kb/555563/ja
うほ、機械翻訳は読めん。
http://support.microsoft.com/kb/555563/en-us
を見ましょう。
このKBによると、DLLにCRTを静的リンクする場合(つまり/MTでlibcmt.libなどを使う場合)には、DisableThreadLibraryCalls を呼んではダメらしいです。
ちょっと前の「テクニック集」みたいなものには、とりあえず呼んどけみたいなことが書いてありました。私もそうしてました。
しかし昔ならいざ知らず、今はCRTは動的リンク(msvcrt80.dllを使う)のほうがよろしいので、あんまり問題にはなりそうにありませんが。
オマケ。 /MT と /MD の区別の方法。
マクロに違いが出ます。
/MT : _MT
/MD : _MT と _DLL
となるそうです。参考:http://msdn.microsoft.com/ja-jp/library/2kzt1wy3.aspx
つまり、 _DLL が define されてるときだけ DisableThreadLibraryCalls しろってことです。
_STATIC_CPPLIB なんていうアヤシゲなマクロもありますがこれはまた後ほどほじくろうと思います。
うほ、機械翻訳は読めん。
http://support.microsoft.com/kb/555563/en-us
を見ましょう。
このKBによると、DLLにCRTを静的リンクする場合(つまり/MTでlibcmt.libなどを使う場合)には、DisableThreadLibraryCalls を呼んではダメらしいです。
ちょっと前の「テクニック集」みたいなものには、とりあえず呼んどけみたいなことが書いてありました。私もそうしてました。
しかし昔ならいざ知らず、今はCRTは動的リンク(msvcrt80.dllを使う)のほうがよろしいので、あんまり問題にはなりそうにありませんが。
オマケ。 /MT と /MD の区別の方法。
マクロに違いが出ます。
/MT : _MT
/MD : _MT と _DLL
となるそうです。参考:http://msdn.microsoft.com/ja-jp/library/2kzt1wy3.aspx
つまり、 _DLL が define されてるときだけ DisableThreadLibraryCalls しろってことです。
_STATIC_CPPLIB なんていうアヤシゲなマクロもありますがこれはまた後ほどほじくろうと思います。
コメント 0