我正在尝试在Visual Studio 2008 Express中使用C++中的SDL.以下程序编译但不链接:
#includeint main(int argc, char *argv[]) { return 0; }
链接错误是:
LINK : fatal error LNK1561: entry point must be defined
无论我如何或如何链接SDL.lib和SDLmain.lib,我都会得到这个.定义main
为main()
或SDL_main()
给出相同的错误,有或没有extern "C"
.
编辑:我通过不在main.cpp中包含SDL.h解决了这个问题 - 我做了一个独立于问题的重构.类似的解决方案是#undef main
在定义函数之前.
我目前没有VC++,但我已多次看到这个问题了.
您需要创建一个Win32项目而不是一个控制台项目.Win32项目需要WinMain函数作为程序入口点.SDLmain.lib包含此入口点,SDL_main.h头文件具有将主函数重新映射到SDL_main的宏.此函数由SDLmain库中的入口点调用.
主要功能必须具有以下签名:
int main(int argc, char *argv[])
在声明main函数之前还需要包含SDL.h,并且需要链接到SDL.lib和SDLmain.lib.
看起来你正在这样做.所以,我的猜测是你有一个控制台项目设置.因此,链接器正在寻找要调用的main函数,但是它会被宏SDL_main.h重新映射到SDL_main.所以,链接器找不到入口点而放弃了!