私たちのC++コードをVS2008からVS2010に移行する際に問題が発生しました。私はそれまでの理由で説明を見つけることができず、あなたの助けに感謝します。VS2008からVS 2010への移行 - 急変?
私たちはカスタムメモリアロケータを持っていて、それはdllにあります。残りのコードでは、プリプロセッサを使用して割り当てを関数にリダイレクトします。シンプルコードはVS2008では正しくコンパイルされますが、VS2010ではコンパイルされません。 stdafh.hで
:VS2010で
#define free my_free
#include <string>
私が取得:
1>d:\program files\microsoft visual studio 10.0\vc\include\xdebug(62): error C3861: 'free': identifier not found
がラインから:
template<class _Ty>
void __CLRCALL_OR_CDECL _DebugHeapDelete(_Ty *_Ptr)
{ // delete from the debug CRT heap even if operator delete exists
if (_Ptr != 0)
{ // worth deleting
_Ptr->~_Ty();
// delete as _NORMAL_BLOCK, not _CRT_BLOCK, since we might have
// facets allocated by normal new.
free(_Ptr);
すべてのヘルプやアイデアが高く評価されます! C++ ISO標準によればモシェ
書く必要がありますので、STLの内容に影響を与えることはできませんように見えます。だから、文字列includeの後に#defineを置く。 –