C++ SDL_TTF头给我带来麻烦

C++ SDL_TTF头给我带来麻烦,c++,sdl,header-files,sdl-ttf,C++,Sdl,Header Files,Sdl Ttf,在病毒迫使我重置为出厂状态后,我一直试图在我的计算机上设置SDL。让SDL与我的IDE CodeBlocks一起运行很容易,但设置扩展库却不那么容易。代码块识别库的存在,但在SDL_ttf头和SDL_图像头中给了我多个错误。 给我带来麻烦的代码部分是: /* Set up for C function definitions, even when using C++ */ #ifdef __cplusplus extern "C" { #endif SDL_Surface* imageBlit

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

/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
extern "C" {
#endif
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;
}
第一行生成错误“error:expected unqualified id before string constant”,第三行生成上述错误和错误“error:expected'}before end of line”。 我猜想这可能与SDL是用C编写的有关,也许我的代码块还没有配置为识别C

编辑:测试源代码如下:

/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
extern "C" {
#endif
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;
}

解决了问题。显然,项目文件不知何故被破坏了,所以我只是将脚本转移到另一个项目中,一切正常外”“C”<代码>,看它是否已经哽住了。它仍然给我“错误:在字符串常量之前的预期不合格ID”。很抱歉编译C代码(不是C++)时出现
extern“C”
块时,会出现您描述的错误消息。为什么你的C代码已经定义了<代码>,ypCPLUS PLUS < /COD>——这超出了我的想象(显然它不能由C编译器本身来做,因为它知道它只为C++保留)。检查你的定义和编译器标志。我在另一台计算机上设置了它,并且有一个不同的SDL项目使用TTF运行,所以这一定是我程序中的一个问题。我尝试调试,但它给了我一个错误:“在动态链接库SDL.dll中找不到过程入口点SDL_getenv。”