2017-08-08 37 views
0

我试图让SDL工作。我目前在我的电脑上安装了Microsoft Visual Studio,我试图运行这个简单的代码。SDL在Visual Studio中无法正常工作

#include "SDL.h" 
int main(int argc, char* argv) { 
SDL_Init(SDL_INIT_EVERYTHING); 
SDL_Quit(); 
return 0; 
} 

使用这种方法,我得到一个奇异的错误消息:

LNK1561 entry point must be defined 
+0

奇怪的空项目模板开始。 LNK1561通常意味着'main'丢失。确保您选择了一个应用程序项目,而不是将构建DLL的项目类型。 – user4581301

+0

您可以编辑您正在使用的Windows,Visual Studio和SDL版本?您是否抓住了[预构建的SDL开发二进制文件](https://www.libsdl.org/download-2.0.php),还是您自己创建了?你在为32位或64位构建你的程序吗? – genpfault

+1

Visual Studio Express 2017,Windows 10,Windows'SDL-devel-2.05-VC.zip'这有帮助吗? –

回答

2
int main(int argc, char* argv) 
        ^not quite right... 

the docs为SDL2的魔法main宏:

/** 
* \file SDL_main.h 
* 
* The application's main() function must be called with C linkage, 
* and should be declared like this: 
* \code 
* #ifdef __cplusplus 
* extern "C" 
* #endif 
* int main(int argc, char *argv[]) 
* { 
* } 
* \endcode 
*/ 

#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE) 
#define main SDL_main 
#endif 

/** 
* The prototype for the application's main() function 
*/ 
extern C_LINKAGE int SDL_main(int argc, char *argv[]); 

所以,你想改变

int main(int argc, char** argv) 

int main(int argc, char* argv[]) 

既然你从你可能还需要选择一个/SUBSYSTEM: usually CONSOLE or WINDOWS

+0

@EyesightTechnology:是的,要么'main()'应该工作。 – genpfault

+0

@EyesightTechnology:你*链接到'SDLmain.lib',对吧? – genpfault

+0

@gempfault:是的,我有。但我对此很新,而且我可能做得不正确。你会如何建议我做链接? (你如何正确使用它?) –

相关问题