1

我最近才开始探索 SDL 2 并libstl2-dev在 Linux 上下载(我正在使用 Mint,如果这很重要的话)。

但是,当我包含 header 时#include <SDL2/SDL.h>,vim 一直告诉我一个错误In included file: 'begin_code.h' file not [clang: pp_file_not_found],请注意我正在使用 coc 和 vim。

我做了一些研究,但我无法解决这个问题。特别是,我注意到了这篇文章,但问题是关于 VS 代码,我不知道如何将它应用于 vim。

下面是我的代码的一部分。

#include "board.h"
#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_timer.h>

void Board::help_init();
4

2 回答 2

2

大多数 Linux 发行版 SDL 开发包应包含可用的 pkg-config工具,允许您查询可以传递给编译器的包含和库位置/名称:

g++ main.cpp `pkg-config --cflags --libs sdl2`

(或者您可以用于$()子命令捕获而不是反引号)

在这个 Debian 盒子上pkg-config返回这些路径/标志:

$ pkg-config --cflags sdl2
-D_REENTRANT -I/usr/include/SDL2

$ pkg-config --libs sdl2
-lSDL2

请注意,-I路径意味着您应该#include <SDL.h>和朋友,而不是#include <SDL2/SDL.h>

// wrong
//#include <SDL2/SDL.h>
//#include <SDL2/SDL_image.h>
//#include <SDL2/SDL_timer.h>
// right
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_timer.h>

尽管出于某种原因,SDL 附加库(如 SDL-image)的 Debian 打包具有大写的 pkg-config 包名称:

g++ main.cpp `pkg-config --cflags --libs sdl2 SDL2_image`
于 2022-02-24T02:43:55.393 回答
-1

您是否链接了 SDL 库?不知道你用的是哪个构建系统,如果不链接SDL库,就必须链接库并重新构建。

于 2022-02-24T02:32:54.933 回答