2012-01-08 2 views
1

Visual C++ (2010)로 SDL 라이브러리를 컴파일하려고하고 Visual Leak Detector로 SDL을 호출하는 다른 프로그램에서 메모리 누수를 찾으려고합니다.VLD로 C 코드 컴파일

문제는 vld.h가 C++ 라이브러리이고 SDL.c가 C 프로그램이라는 것입니다. 내가 #include를 할 때 따라서, 소스는 VLD가 C++ 특정 구조를 사용하는 것으로 컴파일되지 않습니다 : 나는 C++ 프로그램으로 SDL.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에 VLD를 포함시킬 수있는 방법이 있습니까?

+0

C++ 특정 구문은 무엇입니까? 나는 그 코드에서 특정한 C++을 보지 못했다. –

+0

나는 잘 모르겠다. (나는 오직 C++ 만 해왔다. 나는 그것이 코드라고 생각했다. C++ 프로그램에서 컴파일되지만 SDL.C에서 다음과 같은 오류가 발생합니다. 1> c : \ program files (x86) \ visual 누설 감지기 \ include \ vld_def.h (44) : 오류 C2143 : 구문 오류 : C2081 : 'wchar_t': 형식 매개 변수 목록의 이름이 올바르지 않습니다. 1 : '' '앞에'* ' > C : \ program files (x86) \ visual_slide_d.h (44) : 오류 C2143 : 구문 오류 : '' '*'앞에 '*'가 없음 – lochok

+0

> c : \ program files (x86) \ visual 누수 감지기 \ include \ vld_def.h (44) : 오류 C2059 : 구문 오류 : 'type' 1> c : \ program files (x86) \ visual 누설 감지기 \ include \ vld_def.h (44) : 오류 C2059 : 구문 오류 : ')' – lochok

답변

3

(@Matias Valdenegro 덕분에) 문제는 wchar_t이었다. VLD를 포함하는 (그리고 나는 다른 C 소스 파일을 가정) SDL을 다시 컴파일 할 수 있으려면, vld.hvld_def.h 모두

#include <wchar.h> 

를 추가합니다. SDL은 행복하게 컴파일 할 것이고, SDL 프로그램과 함께 사용하면 표면 등의 메모리 누수를 감지 할 수 있습니다.

+1

또는 #include 을 #include 앞에 넣으십시오. mloskot