c++代码块错误:对SDL_PollEvent和WinMain@16的未定义引用
C++ Code Blocks error: undefined reference to SDL_PollEvent and WinMain@16
当尝试创建我的第一个SDL应用程序时,我得到这2个错误,尽管我不确定它们是否相关。我试着找出每一个原因,但我没有找到任何帮助我。我使用的是SDL 2.0.3,我在Windows 7上。
我已经查找了WinMain
错误,我发现它可能试图编译为windows应用程序而不是控制台。所以我确保它在我的项目设置中是主机,它仍然给我这个错误(尽管我不完全确定它应该设置为SDL游戏)。
我发现的任何与SDL_PollEvent
错误相关的问题通常都是涉及到不止一行的链接问题。然而,我相当肯定我把它正确地链接起来,因为我以前确实有链接问题,我解决了,我有另一个参考SDL_Event
,它没有错误。这似乎特别奇怪,因为SDL_PollEvent
和SDL_Event
都在同一个头文件中。
下面是我的源代码和完整的错误输出:
CApp.h:
#ifndef CAPP_H_INCLUDED
#define CAPP_H_INCLUDED
#include <SDL.h>
class CApp{
private:
bool Running;
public:
CApp();
int OnExecute();
bool OnInit();
void OnEvent(SDL_Event* event);
void OnLoop();
void OnRender();
void OnCleanup();
};
bool CApp::OnInit(){
return true;
}
void CApp::OnEvent(SDL_Event* event){
}
void CApp::OnLoop(){
}
void CApp::OnRender(){
}
void CApp::OnCleanup(){
}
CApp.cpp:
#include "CApp.h"
CApp::CApp(){
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(){
CApp theApp;
return theApp.OnExecute();
}
错误输出:||=== Build: Debug in CApp (compiler: GNU GCC Compiler) ===|
objDebugCApp.o||In function `ZN4CApp9OnExecuteEv':|
C:UsersUserNameC++ ProjectsTest PlatformerCApp.cpp|17|undefined reference to `SDL_PollEvent'|
c:program files (x86)codeblocksmingwbin..libgccmingw324.7.1......libmingw32.a(main.o):main.c:(.text.startup+0xa7)||undefined reference to `WinMain@16'|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
提前感谢你的帮助:)
编辑:链接器ourput:
mingw32-g++.exe -LC:SDLSDL2-2.0.3libx64 -LC:SDLSDL2-2.0.3lib -o "binDebugTest Platformer.exe" objDebugCApp.o -lmingw32 -lSDL2main -lSDL2 -lgdi32
objDebugCApp.o: In function `ZN4CApp9OnExecuteEv':
C:/Users/Zshandi/C++ Projects/Test Platformer/CApp.cpp:17: undefined reference to `SDL_PollEvent'
collect2.exe: error: ld returned 1 exit status
我现在已经解决了我的问题,我花了一段时间才找到解决方案。对于WinMain@15错误,我发现这是因为SDL定义了它自己的主函数,所以我不得不将#undef main
添加到我的源代码中。对于我遇到的另一个问题,似乎我使用了错误的库和包含给我错误的文件,我发现我必须使用32位的mingw文件。
相关文章:
- Visual Studio Code "undefined reference to `WinMain@16'"
- "未定义对'WinMain@16'的引用"gcc 编辑器中的错误
- 我无法弄清楚"对Winmain@16错误的未定义引用"
- 使用 C++17 标准对"WinMain@16"的未定义引用
- 二叉树无法编译:错误'WinMain@16'
- 对'WinMain@16'的未定义引用 (C++)
- 尝试使用类文件,出现"undefined reference to `WinMain@16'"错误
- 未定义对“WinMain@16”的引用
- 对WinMain@16 - 代码块的未定义引用
- CodeBlocks未定义对的引用WinMain@16.
- 未定义对"WinMain@16"的引用?
- GNU GCC:尝试编译发行版时对"WinMain@16"的未定义引用(代码::Blocks)
- c++代码块错误:对SDL_PollEvent和WinMain@16的未定义引用
- 对Qt和C-Lion的"WinMain@16"的未定义引用
- SDL 2 对"WinMain@16"和多个 SDL 函数的未定义引用
- 在窗口"undefined reference to 'WinMain@16'"中创建窗口时出错
- c++中对WinMain@16的未定义引用
- 对"WinMain@16"的未定义引用
- c++ -对' WinMain@16. '的未定义引用
- block, MinGW, libsdl和GNU c++编译器:对' WinMain@16的未定义引用