我最近决定尝试使用带有 CodeBlocks 10.05 的 SDL。我从http://www.sdltutorials.com/sdl-tutorial-basics上的教程开始,并尽力遵循它。不幸的是,我遇到了:
..\..\..\..\..\..\SDL\SDL-1.2.15\lib\libSDLmain.a(SDL_win32_main.o):SDL_win32_main.c|| undefined reference to `SDL_main'|
当我尝试编译它时。
我已经搜索了这个网站和其他教程(主要是 LazyFoo 和 CodeBlocks wiki 上的教程)上的许多问题,但似乎找不到解决方案。
- C:\SDL\SDL-1.2.15\include 已添加到编译器选项卡(搜索目录)
- C:\SDL\SDL-1.2.15\lib 已添加到链接器选项卡中
- 库 libmingw32.a、libSDLmain.a、libSDL.dll.a 以该顺序链接
- 来自 CodeBlocks 安装目录中 MinGW\lib 文件夹的 libmingw32.a
- SDL.dll 位于 System32 文件夹和项目文件夹中
在尝试按照 CodeBlocks wiki 上的教程进行操作时,我被告知在给定目录中找不到 SDL.h(在创建新的 SDL 项目时)。
CApp.cpp
#include "CApp.h"
#include "SDL\SDL.h"
CApp::CApp(){
Surf_Display=NULL;
Running=true;
}
int CApp::OnExecute(){
if (OnInit()==false){
return -1;
}
SDL_Event Event;
while (Running){
while (SDL_PollEvent(&Event)){
OnEvent(&Event);
}
OnLoop();
OnRender();
}
OnCleanup();
return 0;
}
int main(int argc, char* argv[]){
CApp theApp;
return theApp.OnExecute();
}
CApp.h
#ifndef CAPP_H_INCLUDED
#define CAPP_H_INCLUDED
#include "SDL\SDL.h"
class CApp{
private:
bool Running;
SDL_Surface* Surf_Display;
public:
CApp();
int OnExecute();
public:
bool OnInit();
void OnEvent(SDL_Event* Event);
void OnLoop();
void OnRender();
void OnCleanup();
};
#endif // CAPP_H_INCLUDED