C 这个链接器错误(SDL2)是什么?

C 这个链接器错误(SDL2)是什么?,c,printf,sdl-2,C,Printf,Sdl 2,我有以下代码,目标是打开一个以毫秒为单位显示计时器的SDL窗口。所以我使用SDLttf、SDL2和Getsystemtime()来获取计时器。我得到这些链接器错误: Error 3 error LNK2019: unresolved external symbol _snprintf referenced in function _SDL_main ...\Source.obj PROJECT Error 4 error LNK1120: 1 unresolved exte

我有以下代码,目标是打开一个以毫秒为单位显示计时器的SDL窗口。所以我使用SDLttf、SDL2和Getsystemtime()来获取计时器。我得到这些链接器错误:

Error   3   error LNK2019: unresolved external symbol _snprintf referenced in function _SDL_main    ...\Source.obj PROJECT
Error   4   error LNK1120: 1 unresolved externals   PROJECT.exe PROJECT
守则:

#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
#include <SDL_ttf.h>
#include <windows.h>


int main(int argc, char ** argv)
{
    int quit = 0;
    SDL_Event event;
    char timertxt[1024];

    SDL_Init(SDL_INIT_VIDEO);
    TTF_Init();
    SYSTEMTIME st1, st2;

    GetSystemTime(&st1);

    SDL_Window * window = SDL_CreateWindow("SDL_ttf in SDL2",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 200,150, 0);
    SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, 0);

    TTF_Font * font = TTF_OpenFont("arial.ttf", 25);
    const char * error = TTF_GetError();
    SDL_Color color = { 255, 255, 255 };

    SDL_Surface * surface;
    SDL_Texture * texture;

    int texW = 0, texH = 0;
    SDL_Rect dstrect;

    while (!quit)
    {
        SDL_PollEvent(&event);
        SDL_Delay(1);

        switch (event.type)
        {
        case SDL_QUIT:
            quit = 1;
            break;
        }

        GetSystemTime(&st2);
        snprintf(timertxt, sizeof(timertxt), "%d", st1.wMilliseconds);
        surface = TTF_RenderText_Solid(font, timertxt, color);
        texture = SDL_CreateTextureFromSurface(renderer,surface);
        SDL_QueryTexture(texture, NULL, NULL, &texW, &texH);
        dstrect = (SDL_Rect){ 0, 0, texW, texH };

        SDL_RenderCopy(renderer, texture, NULL, &dstrect);
        SDL_RenderPresent(renderer);
    }

    SDL_DestroyTexture(texture);
    SDL_FreeSurface(surface);
    TTF_CloseFont(font);

    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    TTF_Quit();
    SDL_Quit();

    return 0;
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,字符**argv)
{
int-quit=0;
SDL_事件;
char timertxt[1024];
SDL_Init(SDL_Init_视频);
TTF_Init();
系统时间st1、st2;
GetSystemTime(&st1);
SDL_Window*Window=SDL_CreateWindow(“SDL2中的SDL_ttf”,SDL_WINDOWPOS_未定义,SDL_WINDOWPOS_未定义,200150,0);
SDL_Renderer*Renderer=SDL_CreateRenderer(窗口,-1,0);
TTF_Font*Font=TTF_OpenFont(“arial.TTF”,25);
const char*error=TTF_GetError();
SDL_颜色={255,255,255};
SDL_表面*表面;
SDL_纹理*纹理;
int-texW=0,texH=0;
SDL_Rect dstrect;
而(!退出)
{
SDL_PollEvent(事件和事件);
SDL_延迟(1);
开关(事件类型)
{
案例SDL_退出:
退出=1;
打破
}
GetSystemTime(&st2);
snprintf(timertxt,sizeof(timertxt),“%d”,st1.wmillesons);
表面=TTF_RenderText_实体(字体、TimerText、颜色);
纹理=SDL_CreateTextureFromSurface(渲染器,曲面);
SDL_QueryTexture(纹理、NULL、NULL和texW、texH);
dstrect=(SDL_Rect){0,0,texW,texH};
SDL_RenderCopy(渲染器、纹理、NULL和dstrect);
SDL_渲染器呈现(渲染器);
}
SDL_破坏纹理(纹理);
SDL_自由曲面(曲面);
TTF_关闭字体(字体);
SDL_渲染器(渲染器);
SDL_窗口(窗口);
TTF_Quit();
SDL_退出();
返回0;
}

我看不出在sme代码中使用snprintf作为SDL有什么问题。

使用
\u snprintf
\u snprintf\u s
版本,而不是
snprintf
。在Windows中,它被认为是不推荐使用的POSIX函数

不推荐使用以下函数的POSIX名称。在大多数情况下,在下划线字符前面加上前缀会给出标准的等效名称

检查此链接:


使用
\u snprintf
\u snprintf\u s
版本,而不是
snprintf
。在Windows中,它被认为是不推荐使用的POSIX函数

不推荐使用以下函数的POSIX名称。在大多数情况下,在下划线字符前面加上前缀会给出标准的等效名称

检查此链接:


使用
\u snprintf
\u snprintf\u s
版本,而不是
snprintf
。在Windows中,它被认为是不推荐使用的POSIX函数

不推荐使用以下函数的POSIX名称。在大多数情况下,在下划线字符前面加上前缀会给出标准的等效名称

检查此链接:


使用
\u snprintf
\u snprintf\u s
版本,而不是
snprintf
。在Windows中,它被认为是不推荐使用的POSIX函数

不推荐使用以下函数的POSIX名称。在大多数情况下,在下划线字符前面加上前缀会给出标准的等效名称

检查此链接: