トップ ソフト 雑記 日記 リンク

2002年3月22日金曜日

メモ。
I finally traced the problem down to a file in the STLPort. The header "stl/_threads.h" has function prototypes for InterlockedIncrement, InterlockedDecrement, and InterlockedExcahange which are set based on the compiler version instead of the library version.
#if (_MSC_VER >= 1300)
The problem is that I'm running _MSC_VER=1200, but now I have the latest Platform SDK, which uses the 1300+ declarations of the afore mentioned functions. My temporary fix was to change the line to
#if (_MSC_VER >= 1200)
until the maintainers of the STLPort release a patch.
/stlport/stl/_threads.h
#if (_MSC_VER >= 1200/*1300*/) || defined (_STLP_NEW_PLATFORM_SDK)
_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long volatile *);
_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long volatile *);
_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long volatile *, long);
#else
  // boris : for the latest SDK, you may actually need the other version of the declaration (above)
  // even for earlier VC++ versions. There is no way to tell SDK versions apart, sorry ...

_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long*);
_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long*);
_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long*, long);
#endif

0 件のコメント:

コメントを投稿

広告