【问题标题】:SDL2 begin_code.h file not found未找到 SDL2 begin_code.h 文件
【发布时间】:2022-02-24 14:46:48
【问题描述】:

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

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

我进行了一些研究,但无法解决问题。特别是,我注意到this post,但问题在于 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();

【问题讨论】:

  • libstl2-dev?你的意思是libsdl2-dev
  • @genpfault 是的,抱歉,这是一个错字
  • FWIW,Vim 什么都没告诉你,是 coc 告诉你的。

标签: c++ clang sdl-2 coc.nvim


【解决方案1】:

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

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

(或者你可以use $() for subcommand capture而不是反引号)

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

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

$ pkg-config --libs sdl2
-lSDL2

注意-I 路径意味着你应该#include &lt;SDL.h&gt; 和朋友,而不是#include &lt;SDL2/SDL.h&gt;

// 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`

【讨论】:

  • 谢谢,我能够使用附加标志编译board.cpp。但是,vim 仍然告诉我同样的错误,这很烦人。你能详细说明#include 和朋友的意思吗?
  • 另外,我不知道这有多相关,但是当我转到 /usr/include/SDL2 时,我确实看到了一个名为 begin_code.h 的文件,当我打开它时没有错误。但是,当我打开SDL.h时,错误又出现了。
【解决方案2】:

您是否链接了 SDL 库? 不知道你用的是哪个编译系统 如果不链接 SDL 库,则必须链接该库并重建它。

【讨论】:

    猜你喜欢
    • 2021-01-19
    • 2020-12-18
    • 2023-03-29
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多