log4cplus를 SDL과 함께 사용하여 작은 그래픽 응용 프로그램을 만들려고합니다.
Windows에서 minGW 및 Eclipse CDT를 사용하고 있습니다.로깅 라이브러리를 사용하는 경우 SDL에 창이 표시되지 않습니다.
내 문제는 라이브러리를 사용할 때마다 내 SDL 창이 표시되지 않는다는 것입니다. 대신 콘솔 [New Thread 2624.0x1270]
에이 내용이 있습니다. 오류 메시지 없음, 컴파일/링크 문제 없음, 아무 것도 없음 (정밀도 편집 참조)
라이브러리를 사용하지 않으면 콘솔에 유사한 메시지가 나타난 다음 사라지고 내 SDL 창이 제대로 표시됩니다.
다음은이 동작의 예입니다. "Logger"로 시작하는 두 줄에 주석을 달면 모든 것이 정상입니다. 그렇지 않으면 SDL 창이 표시되지 않습니다.
편집 : 로깅 라이브러리를 사용하고 다른 모든 코드에 주석을 달았습니다.하지만 어떻게 든 실패합니다. 나는 로거 코드에 중단 점을 넣을 수 없다. 이클립스는 나를 알린다. 중단 점 속성 문제 : 설치가 실패했다. 코드가 실행되지 않는 것 같다.
* 편집 2 : * 잘못된 트랙에있었습니다. 아래 내 게시물을 참조하십시오. 문제의 종류가 해결되었습니다.
아이디어가 있으십니까?
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL/SDL_endian.h> /* Used for the endian-dependent 24 bpp mode */
#include "Screen.h"
#include <log4cplus/logger.h>
#include <iomanip>
using namespace log4cplus;
int main(int argc, char **argv) {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
fprintf(stderr, "Impossible d'initialiser SDL: %s\n", SDL_GetError());
exit(1);
}
SDL_Surface *screen;
screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
if (screen == NULL) {
fprintf(stderr, "Impossible de passer en 640x480 en 16 bpp: %s\n", SDL_GetError());
exit(1);
}
Logger root = Logger::getRoot();
Logger log_1 = Logger::getInstance(LOG4CPLUS_TEXT("test.log_1"));
while(true)
{
SDL_Event event;
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_KEYDOWN:
printf("La touche %s a été préssée!\n",
SDL_GetKeyName(event.key.keysym.sym));
//SDL_Quit();
break;
case SDL_QUIT:
exit(0);
}
Screen::DrawPixel(screen,20,20,200,10,10);
}
}
위 코드에 대한 문제를 발견 했으므로 참고하시기 바랍니다. log4cplus를 사용하기 전에 초기화해야합니다. '#include'를 추가하고'BasicConfigurator :: doConfigure();'를 호출하면'std :: cout'에 로깅을 통해 최소한의 설정을 얻을 수 있습니다. –
wilx