【发布时间】:2018-05-29 05:38:36
【问题描述】:
我用 sdl 修复了一个错误,但 Quentin 发现了另一个问题。 (再次感谢您的通知。)
问题来了:
控制台中没有记录可执行文件中的任何内容,并且我遇到了一个错误,我必须使用 .c_str() 将变量转换为字符串,但由于某种原因,编译没有说明任何内容。
这是我的 makefile 的样子(我对 makefile 还不是很擅长,因为我不太了解它是如何工作的,但这就是我现在所拥有的):
#Is it in debug mode?
DEBUG=yes
SHELL='sh -x'
CC = G++
#OBJS specifies which files to compile as part of the project
OBJS = src/main.cpp
#OBJ_NAME specifies the name of the executable
OBJ_NAME = Game
INCLUDE_PATHS = -IC:/mingw_dev_lib/include/SDL2
LIBRARY_PATHS = -LC:/mingw_dev_lib/lib
COMPILER_FLAGS = -w -Wl,-subsystem,windows
LINKER_FLAGS = -lmingw32 -lSDL2main -lSDL2 -lSDL2_image
#This is the target that compiles the executable
all : $(OBJS)
ifeq ($(DEBUG),yes)
g++ $(OBJS) $(INCLUDE_PATHS) $(LIBRARY_PATHS) $(COMPILER_FLAGS) -g $(LINKER_FLAGS) -o Debug\$(OBJ_NAME)
else
g++ $(OBJS) $(INCLUDE_PATHS) $(LIBRARY_PATHS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o Release\$(OBJ_NAME)
endif
【问题讨论】:
-
究竟是缺少
.c_str()导致的编译器错误,还是运行时错误?也就是说,如果您手动运行适当的g++ ...命令,是否会报错?如果不是,请修改您的问题以显示有错误的代码,并询问我们为什么它会导致运行时错误。 -
好吧,在我的
SDL_Log()中的字符串之后解析.c_str()之前,显然应该会发生警告,但这里的问题是编译器应该明显地对该错误发出警告.另外,我想知道的是,从 MingWx64 控制台运行game.exe时,我也无法让可执行文件登录控制台。 -
请停止混合编译和运行程序。您的问题与编译有关,然后我们讨论编译器错误/警告以及 makefile 使用、直接 g++ 编译之间的区别……或者我们在执行程序时讨论问题 - 然后您完全问错了问题。
-
我从来没有问过可执行文件,它只是我写的,以防它在编译时与相同的问题有关。