【问题标题】:SDL_TTF header giving me troubleSDL_TTF 标头给我带来了麻烦
【发布时间】:2014-10-23 02:03:24
【问题描述】:

在病毒迫使我重置为出厂状态后,我一直试图在我的计算机上设置 SDL。使用我的 IDE CodeBlocks 运行 SDL 很容易,但设置扩展库却不那么容易。 CodeBlocks 识别库的存在,但在 SDL_ttf 标头和 SDL_image 标头中给了我多个错误。 给我带来麻烦的代码部分是这样的:

/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
extern "C" {
#endif

第一行产生错误“error: expected unqualified-id before string constant”,第三行产生上述错误和错误“error: expected '}' before end of line”。 我的猜测是,这可能与用 C 编写的 SDL 有关,也许我的 CodeBlocks 尚未配置为识别 C。

编辑:测试源代码是这样的:

SDL_Surface* imageBlitingFunctions::loadText(Uint8 red, Uint8 blue, Uint8 green, std::string fontname, int fontSize, std::string text)
{

    SDL_Color textColor = {red, blue, green};

    TTF_Font *font1 = TTF_OpenFont(fontname.c_str(), fontSize);

    SDL_Surface *message1 = TTF_RenderText_Solid(font1, text.c_str(), textColor);

    return message1;
}

【问题讨论】:

  • ifdef'ed extern C 是使 C 函数可从 C++ 调用的非常标准的方法,这完全没问题。你用的是什么编译器?确切的错误信息是什么,测试程序的源代码是什么?
  • 是的,我不确定您发布的代码是否存在问题。也许这就是它之前的样子。无论如何,您应该确保这不是您的环境中的一些错误,您可以尝试创建一个新的 c++ 项目,其中包含一个声明为 extern "C" 的简单函数,以查看它是否已经阻塞。
  • 它仍然给我“错误:字符串常量之前的预期 unqualified-id”。
  • 我想这里没有读心者,抱歉。您描述的错误消息发生在编译 C 代码(不是 C++)时出现 extern "C" 块。为什么你的 C 代码定义了__cplusplus - 超出了我的想象(它显然不能由 C 编译器本身完成,因为它知道它只为 C++ 保留)。检查您的定义和编译器标志。
  • 好吧,我在另一台计算机上设置了它,并使用 TTF 运行了一个不同的 SDL 项目,所以它一定是我的程序中的一个问题。我尝试调试,它给了我错误:“程序入口点 SDL_getenv 无法位于动态链接库 SDL.dll 中。”

标签: c++ sdl header-files sdl-ttf


【解决方案1】:

找出问题所在。显然项目文件不知何故损坏了,所以我只是将脚本转移到另一个项目中,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2011-12-11
    相关资源
    最近更新 更多