1

crtdbg.hメモリリークの検出を非常に簡単にする隠された宝石を発見しました。残念ながら、今日 DirectX を自分のプログラムにリンクしたところ、今まで見たことのないエラーが発生しました。

1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.h(425): error C2059: syntax error : 'constant'
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.h(425): error C2091: function returns function
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.h(425): error C2802: static member 'operator new' has no formal parameters
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.h(426): error C2059: syntax error : 'constant'
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.h(426): error C2090: function returns array
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.inl(1003): error C2761: 'void *(__cdecl *_D3DXMATRIXA16::operator new(void))(size_t)' : member function redeclaration not allowed
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.inl(1003): fatal error C1903: unable to recover from previous error(s); stopping compilation

crtdbg が新しい演算子をオーバーライドすると、DirectX SDK で何かが壊れているようです (エラーに気付かなかった場合、私は DirectX 11 SDK を使用しています)。このようなものは文書化されていますか?いくつかの検索では結果が得られませんでした。これらのメモリ デバッグ ツールを引き続き使用できることを心から願っています。回避策があれば大歓迎です。

4

1 に答える 1

1

わかりました、私はそれを理解しました。Google経由でこの投稿を見つけました。(これを入力しているときに、サイドバーにスタック オーバーフローが表示されていればよかったのに! あるいは表示されていたのに見逃してしまった...)。

基本的に、 のインクルードと の定義を別のヘッダーに移動crtdbg.hstdlib.h_CRTDBG_MAP_ALLOCプロジェクトのプロパティ ページで [ C/C++ ] >> [詳細Forced Include File設定] の下のオプションを使用して、そのインクルード ファイルをすべての場所に強制する必要があります。これにより、他のすべてのオーバーライドがオーバーライドされるようです。new

于 2012-06-10T19:22:29.543 に答える