Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup, but this time it's NOT a Windows/Console problem!

So, the infamous error is back. The project is complaining that it can't find the main() method (that's what the error means, right).

However I do have a main, and my project is a Console project, as it should be. It worked before, so I know it's not that.

Also, the project has too many classes and files for me to post them all, so I will post any classes you need by request.

It's a C++, OpenGL and SDL game on Visual Studio 2010. It's not a problem of any of the libraries, as it was working fine before it suddenly and inexplicably showed this linker error.

EDIT: The main() method:

int main(int argc, char **argv) {  glutInit(&argc, argv);  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_ALPHA);  glutCreateWindow("Game");   glEnable(GL_DEPTH_TEST);  glEnable(GL_NORMALIZE);  glEnable(GL_COLOR_MATERIAL);  glEnable(GL_BLEND);  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);   g = Game();  glutInitWindowSize(g.getScreenWidth(), g.getScreenHeight());  //glutPositionWindow(1280, 50);   // Callbacks  glutDisplayFunc(handleRedraw);  glutReshapeFunc(handleResize);  glutMouseFunc(handleMouseClicks);  glutPassiveMotionFunc(handleMouseOvers);  glutKeyboardFunc(handleKeyboardEvents);  glutTimerFunc(50, moveItemToInventory, 0);   glutMainLoop();   return 0; } 
like image 320
OddCore Avatar asked Jul 27 '11 15:07

OddCore


People also ask

How do I fix unresolved external symbol in C++?

So when we try to assign it a value in the main function, the linker doesn't find the symbol and may result in an “unresolved external symbol” or “undefined reference”. The way to fix this error is to explicitly scope the variable using '::' outside the main before using it.

What is LNK2019 unresolved external symbol?

LNK2019 can occur when a declaration exists in a header file, but no matching definition is implemented. For member functions or static data members, the implementation must include the class scope selector. For an example, see Missing Function Body or Variable.


1 Answers

SDL_main.h is included automatically from SDL.h, so you always get the nasty #define.

Just write:

#include <SDL.h> #undef main 

And it should work fine

like image 168
rodrigo Avatar answered Sep 19 '22 17:09

rodrigo