我正在尝试使用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 ++程序,但是我收到了大量错误。
我有什么办法可以在SDL中加入VLD吗?
答案 0 :(得分:3)
(感谢@Matias Valdenegro)
问题是wchar_t
。为了能够重新编译SDL(我假设其他C源文件)以包含VLD,请添加
#include <wchar.h>
同时发送vld.h
和vld_def.h
。然后SDL会愉快地编译,并且可以与SDL程序一起使用来检测源自Surfaces等的内存泄漏。