开发者

Can't link Hello World!

Guys that is code copied from a book (Programming Windows 5th edition):

开发者_StackOverflow社区#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0) ;

     return 0 ;
}

Link to the topic in which this book is recommended. Can't compile it with VS2010. What am I doing wrong?

Error   1   error LNK2001: unresolved external symbol _WinMainCRTStartup

Thanks.


It will depend on how you set up the project. In VS2010, if I create a new project via File->New->Project, Visual C++, Empty Project, then add a new C++ file, and copy your code in, it compiles and runs just fine.

If you've created a different type of project, it may be using different link libraries. Try right-clicking on your project in Solution Explorer, going to Properties->Linker->System, and setting SubSystem to "Windows (/SUBSYSTEM:WINDOWS)

The Win32 APIs are old, but for the most part are perfectly usable if you want to do native Windows programming. Windows has done a great deal of work to ensure that as long as you've followed the documentation, old APIs will not change. You can still compile 16-bit Windows 3.1 code from 1992 and run it on 32-bit Windows 7.

Edit: It could also be that in Properties->C/C++->Advanced, you have Omit Default Library Name set to "Yes", you probably want it set to "No"

Or also Properties->Linker->Input->Ignore Default Libs should be set to No.


You need to set the project's linker settings to create a Windows GUI program rather than a console program:

  • "Linker/System/SubSystem" should be set to "Windows (/SUBSYSTEM:WINDOWS)"

Usually this setting gets set properly when you create the project and choose a Windows GUI Application template. Unfortunately, if the project is set to the incorrect application type, the setting is a bit buried (it took me bit of digging to find it).


Make sure you have actually added the source file to the project. This worked for me.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜