我正在尝试将 log4cplus 与 SDL 结合使用来制作一个小图形应用程序。
我在 Windows 上使用 minGW 和 Eclipse CDT。
我的问题是,每当我使用该库时,我的 SDL 窗口都不会显示。相反,我在控制台上得到了这个[New Thread 2624.0x1270]
,就是这样。没有错误消息,没有编译/链接问题,什么都没有(请参阅编辑以了解精度)。
如果我不使用该库,控制台上会出现类似的消息然后消失,并且我的 SDL 窗口会正确显示。
以下是此行为的示例。如果我评论以“Logger”开头的两行,那么一切都很好。如果我不这样做,则不会显示 SDL 窗口。
编辑:我试过只使用日志库并评论所有其他代码,但这也以某种方式失败。我无法在记录器代码上设置断点,eclipse 告诉我:断点属性问题:安装失败,代码似乎没有执行。
* Edit2: *我走错了路,请参阅下面的帖子。问题有点解决了。
任何想法?
#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);
}
}