SDL ld вернул 1 статус выхода - PullRequest
0 голосов
/ 17 мая 2011

я пишу пример SDL-программы, и я просто написал простейшую программу, но я получаю следующую ошибку из-за моей функции SDL_pollevent ():

Test.cpp:(.text._ZN4CApp9OnExecuteEv[CApp::OnExecute()]+0x41): undefined reference to `SDL_PollEvent'
collect2: ld returned 1 exit status

и код:

int OnExecute()
{
    if(OnInit()==false)
        return -1;
    SDL_Event Event;
    while(Running)
    {
        while(SDL_PollEvent(&Event))
        {
            OnEvent(&Event);
        }
            OnLoop();
        OnRend();
    }
    OnClean();
    return 0;
}

Ответы [ 2 ]

4 голосов
/ 18 мая 2011

Это ошибка компоновщика.Вы неправильно связываете библиотеки SDL со своим проектом.Обычно вам нужно добавить -lSDL к вашему компоновщику.Если вы используете Windows, я считаю, что вы должны добавить -lSDLmain тоже.Убедитесь, что ваш компилятор знает, где найти эти файлы (правильно укажите путь к вашей библиотеке).Если вы не знаете, как это сделать, проверьте инструкции по установке для системы и среды IDE в этого руководства .

Я предполагаю, что SDL_Init() вызывается в OnInit()?В противном случае ваша программа не будет работать правильно.

0 голосов
/ 21 мая 2011

Во-первых, убедитесь, что вы используете SDL.h, который будет выглядеть так на большинстве платформ:

#include "SDL.h"

Если вы работаете на Mac с XCode, вам нужно использовать это вместо:

#include <SDL/SDL.h>

Затем убедитесь, что вы связались с платформой SDL:

  • Если вы используете Visual Studio (Windows), щелкните проект правой кнопкой мыши и откройте «Свойства», затем в разделе «Свойства конфигурации»> «Компоновщик»> «Вход» убедитесь, что в поле «Дополнительные зависимости» SDL.lib SDLmain.lib .
  • Если вы используете Xcode (Mac), найдите SDL.framework (возможно, в / Library / Frameworks) и перетащите его в папку Frameworks вашего проекта.
  • Если вы вызываете GCC из командной строки, создайте ссылку на libSDL.a и libSDLmain.a, добавив -lSDL -lSDLmain в командную строку.
...