• 9
• 9
• 10
• 10
• 9

# Same Problem with every Project

This topic is 1900 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Greetings

As i mentioned in the Title i keep geeting the same issue with every project. Everytime i buy a book with a CD in it, having all the code in it. I always enjoy to start it for the first time. But always it comes up with errors when i try to compile does Projects. If i start something new like learn how to programm with SDL. Then i get a Linking problem or a did not found error. This keeps annoying me, and till now no one has shown me how to Logicaly search for the errors in these Projects.

Do you have any ideas what exactly to do? I normaly always copy the front part of the error and go search on google. But most don't even give good hints on what to exactly to do.

As for a Example il give you this.

http://www.lazyfoo.net/SDL_tutorials/lesson01/windows/msvsnet2010e/index.php

This would be the step i tried and this :

MSVCRT.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup



Is what i got in response. It just pretty much annoys me that these errors show up and i have no clue what to do, or what they mean.

I hope you guys can help me

##### Share on other sites

What does your main function look like?

if it's just int main() you could try setting the subsystem to console:

Project -> Properties -> Configuration Properties -> Linker -> System

• Change SubSystem to Console.

##### Share on other sites

MSVCRT.lib is the "MicroSoft Visual C RunTime". It's related to Windows rather than C/C++, which is why you don't see it discussed a lot in C/C++ tutorials.

Basically what this error is saying is that it's trying to wrap your program with the components needed to make a Windows program, but it can't find your main() function. If you're trying to write a console program you need to have a correctly implemented main() as your entry point. If you're trying to write a non-console program then you need to change your configuration in Visual Studio to let the compiler know that (and it will look for WinMain() instead of main()). If you're writing a dll or lib then you also need to change the configuration accordingly to let the compiler know about it.

Dissecting this error message:

"MSVCRT.lib(crtexe.obj)"

There was an error while attempting to work with MSVCRT.lib in order to create crtexe.obj.

"error LNK2019"

This is the error code. LNK signifies that it's a linker error. The linker is responsible for connecting functions and objects between different compilation units (obj files). The compiler turns your input files into .obj files full of bytecode and then the linker glues the .obj files together to create a module (exe/lib/dll or whatever). The linker's main job is to create a table of 'symbols' that each .obj file contains so that when they get put together those symbols can be translated into addresses, allowing functions in one compilation unit to call functions in a different compilation unit and etc.

"unresolved external symbol _main"

I could not find the symbol 'main'. (In this case a 'symbol' is the name of a function or variable that needs to be shared between compilation units.)

"referenced in function ___tmainCRTStartup"

This is the function that was asking for that symbol. ('mainCRTStartup' is the part of the Windows-related code that calls your main function when the program starts.)

Too much info?