C++ 我似乎无法让SDL处理崇高的文本

C++ 我似乎无法让SDL处理崇高的文本,c++,linux,sublimetext3,sdl,C++,Linux,Sublimetext3,Sdl,我正在制作一个简单的游戏,并希望使用SDL的图形。我运行Linux Ubuntu,并使用崇高的文本编辑器,G+编译器,我在C++中编码。我下载了SDL并进行了跟踪 在我遵循这些步骤之后,所有SDL错误都停止出现。但是,标志变量不起作用 代码如下: #include <SDL2/SDL.h> Risk() { SDL_Init(SDL_INIT_HAPTIC); window = SDL_CreateWindow("Board",SDL_WINDOWPOS_CENTER

我正在制作一个简单的游戏,并希望使用SDL的图形。我运行Linux Ubuntu,并使用崇高的文本编辑器,G+编译器,我在C++中编码。我下载了SDL并进行了跟踪

在我遵循这些步骤之后,所有SDL错误都停止出现。但是,标志变量不起作用

代码如下:

#include <SDL2/SDL.h>
Risk() {
    SDL_Init(SDL_INIT_HAPTIC);
    window = SDL_CreateWindow("Board",SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 500,500, SDL_WINDOW_RESIZABLE);
    SDL_GetError();
}

我认为错误在于SDL库位于错误的位置,或者升华不知道它们在哪里。

问题在于升华没有添加所需的指令来指示可执行文件应该链接到SDL2库

您可以在命令行上使用参数-lSDL2来指示它,也可以将sdl2 config程序与
sdl2 config--libs
一起使用,如下所示:

$g++-o可执行文件名source.cpp-lSDL2

$g++-o可执行文件名source.cpp$(sdl2 config--libs)

sdl2 config只是一个实用程序,它输出适当的配置选项以进行编译和链接。您可以通过单独运行来查看它:

$sdl2配置--libs

它应该输出如下内容:

-L/usr/lib-lSDL2

您可以看到前面提到的相同的-lSDL2,还有一条-L/usr/lib指令,指示链接器在其搜索路径的/usr/lib/目录中包含库。 通常,您应该使用sdl2配置来获取传递给编译器的所需配置选项,而不是自己指示它们,当然,除非您知道自己在做什么

您可以在Sublime文本中使用Make-build系统,而不是转到命令行进行编译。使用以下内容将名为Makefile的文件添加到项目目录中:

# OBJS place here every file to compile as part of the project
OBJS = Game.cpp

# CC compiler to use
CC = g++

# COMPILER_FLAGS compilation options
COMPILER_FLAGS = -std=c++14 -Wall `sdl2-config --cflags`

# LINKER_FLAGS libraries to link
LINKER_FLAGS = `sdl2-config --libs`

# OBJ_NAME executable
OBJ_NAME = mygame

all : $(OBJS)
    $(CC) $(OBJS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME) 

然后进入菜单工具->构建系统并选择制作。现在尝试构建您的项目,如果成功,则应该创建一个mygame可执行文件。

问题是Sublime没有添加所需的指令来指示该可执行文件应链接到SDL2库

您可以在命令行上使用参数-lSDL2来指示它,也可以将sdl2 config程序与
sdl2 config--libs
一起使用,如下所示:

$g++-o可执行文件名source.cpp-lSDL2

$g++-o可执行文件名source.cpp$(sdl2 config--libs)

sdl2 config只是一个实用程序,它输出适当的配置选项以进行编译和链接。您可以通过单独运行来查看它:

$sdl2配置--libs

它应该输出如下内容:

-L/usr/lib-lSDL2

您可以看到前面提到的相同的-lSDL2,还有一条-L/usr/lib指令,指示链接器在其搜索路径的/usr/lib/目录中包含库。 通常,您应该使用sdl2配置来获取传递给编译器的所需配置选项,而不是自己指示它们,当然,除非您知道自己在做什么

您可以在Sublime文本中使用Make-build系统,而不是转到命令行进行编译。使用以下内容将名为Makefile的文件添加到项目目录中:

# OBJS place here every file to compile as part of the project
OBJS = Game.cpp

# CC compiler to use
CC = g++

# COMPILER_FLAGS compilation options
COMPILER_FLAGS = -std=c++14 -Wall `sdl2-config --cflags`

# LINKER_FLAGS libraries to link
LINKER_FLAGS = `sdl2-config --libs`

# OBJ_NAME executable
OBJ_NAME = mygame

all : $(OBJS)
    $(CC) $(OBJS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME) 

然后进入菜单工具->构建系统并选择制作。现在尝试构建您的项目,如果成功,则应已创建mygame可执行文件。

这些是链接器错误,这意味着链接器无法找到满足缺少符号所需的库。最明显的原因是您使用的是
C++单文件
内置构建系统,该系统不包含任何额外的库。这些是链接器错误,这意味着链接器无法找到它需要的库来满足缺少的符号。最明显的原因是你使用的是<代码> C++单文件< /CudioBuffuin构建系统,它不包括任何额外的库。你提到的参数,我是在C++文件上,还是在Linux命令行上?在你试图编译你的文件时,在Linux命令行上。我发布的Makefile包含它们,如果您在Sublime中选择Make构建系统并添加一个名为Makefile的文件以及我发布的内容,您应该能够使用Sublime中的“构建”菜单选项进行编译。它表示我缺少分隔符错误:**缺少分隔符。别说了。没关系,我已经把它编译好了,但是我的SDL有问题。这个问题已经回答了,感谢你提到的参数,我在Linux命令行上,包括在C++文件上,或者在Linux命令行上,当你试图编译你的文件时。我发布的Makefile包含它们,如果您在Sublime中选择Make构建系统并添加一个名为Makefile的文件以及我发布的内容,您应该能够使用Sublime中的“构建”菜单选项进行编译。它表示我缺少分隔符错误:**缺少分隔符。别说了。没关系,我已经把它编译好了,但是我的SDL有问题。这个问题已经回答了,谢谢