Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VisualStudio2008Express中编译和链接最小的SDL程序? 我试图在Visual Studio 2008 Express中使用C++中的SDL。以下程序编译但不链接: #include <SDL.h> int main(int argc, char *argv[]) { return 0; }_C++_Visual Studio_Sdl - Fatal编程技术网

如何在VisualStudio2008Express中编译和链接最小的SDL程序? 我试图在Visual Studio 2008 Express中使用C++中的SDL。以下程序编译但不链接: #include <SDL.h> int main(int argc, char *argv[]) { return 0; }

如何在VisualStudio2008Express中编译和链接最小的SDL程序? 我试图在Visual Studio 2008 Express中使用C++中的SDL。以下程序编译但不链接: #include <SDL.h> int main(int argc, char *argv[]) { return 0; },c++,visual-studio,sdl,C++,Visual Studio,Sdl,无论我如何或是否与SDL.lib和SDLmain.lib链接,我都会得到它。将main定义为main()或SDL_main()会产生相同的错误,无论是否使用extern“C” 编辑:我通过在main.cpp中不包含SDL.h解决了这个问题,这是一个独立于问题的重构。一个类似的解决方案是在定义函数之前定义主函数。链接器找不到入口点。这意味着main()函数不能被识别为入口点 如果有.def文件,请将其删除 另外,如果您将项目设置为使用unicode而不是mbcs进行编译,则必须使用wmain()而

无论我如何或是否与SDL.lib和SDLmain.lib链接,我都会得到它。将
main
定义为
main()
SDL_main()
会产生相同的错误,无论是否使用
extern“C”


编辑:我通过在main.cpp中不包含SDL.h解决了这个问题,这是一个独立于问题的重构。一个类似的解决方案是在定义函数之前定义主函数。

链接器找不到入口点。这意味着main()函数不能被识别为入口点

如果有.def文件,请将其删除


另外,如果您将项目设置为使用unicode而不是mbcs进行编译,则必须使用wmain()而不是main()。

我目前没有可用的VC++,但我已经多次看到这个问题

您需要创建Win32项目,而不是控制台项目。Win32项目需要一个函数作为程序入口点。SDLmain.lib包含这个入口点,SDL_main.h头文件有一个宏,可以将主函数重新映射到SDL_main。此函数由SDLmain库中的入口点调用

主功能必须具有以下签名:

int main(int argc, char *argv[])
它还需要在声明主函数之前包含SDL.h,并且需要链接到SDL.lib和SDLmain.lib


看起来你正在这样做因此,我猜您有一个控制台项目设置。因此,链接器正在寻找一个要调用的主函数,但它正在被宏SDL\U main.h重新映射到SDL\U main。所以,链接器找不到入口点就放弃了

在main()之前添加以下行对我很有帮助:

还建议添加以下行:

#ifdef _WIN32
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#endif

虽然我在尝试第二种解决方案时仍有链接错误。

是的,将从更改为windows应用程序(通过项目属性/配置属性/链接器/系统/子系统)是可行的。谢谢(不过,我最终找到了一个不同的解决方案)
#ifdef _WIN32
#undef main
#endif
#ifdef _WIN32
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#endif