1

Visual C++ (2010) で SDL ライブラリをコンパイルしようとしています。Visual Leak Detector を使用して、SDL を呼び出す別のプログラムでメモリ リークを見つけようとしています。

問題は、vld.h が C++ ライブラリであり、SDL.c が C プログラムであることです。したがって、 #include すると、VLD が C++ 固有の構造を使用しているように見えるため、ソースはコンパイルされません。

typedef int (__cdecl * VLD_REPORT_HOOK)(int reportType, wchar_t *message, int *returnValue);

__declspec(dllimport) int VLDSetReportHook(int mode,  VLD_REPORT_HOOK pfnNewHook);

SDL.c を C++ プログラムとしてコンパイルしようとしましたが、大量のエラーが発生します。

VLD を SDL に含める方法はありますか?

4

1 に答える 1

3

(@Matias Valdenegro に感謝)

問題は、wchar_t. VLDを含めるためにSDL(および他のCソースファイルを想定)を再コンパイルできるようにするには、次を追加します

#include <wchar.h>

と の両方vld.hvld_def.h。その後、SDL は正常にコンパイルされ、SDL プログラムで使用して、Surface などに起因するメモリ リークを検出できます。

于 2012-01-09T10:34:59.950 に答える