gpt4 book ai didi

c++ - 如果我使用日志记录库,SDL 不会显示其窗口

转载 作者:太空宇宙 更新时间:2023-11-04 14:24:49 24 4
gpt4 key购买 nike

我正在尝试结合使用 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);
}
}

最佳答案

我没有使用 log4cplus 的经验,但我知道您应该知道 SDL 对 stdout 和 stderr 进行了一些令人讨厌的重新布线。

我本来想说您应该将记录器设置移到 SDL_Init 调用之后,但我只是注意到您甚至没有。在设置显示之前尝试调用 SDL_Init。

关于c++ - 如果我使用日志记录库,SDL 不会显示其窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4901649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com