gpt4 book ai didi

c++ - 如何获得最小的 SDL 程序以在 visual studio 2008 express 中编译和链接?

转载 作者:可可西里 更新时间:2023-11-01 18:28:55 27 4
gpt4 key购买 nike

我正在尝试将 C++ 中的 SDL 与 Visual Studio 2008 Express 结合使用。以下程序编译但不链接:

#include <SDL.h>

int 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[])

还需要在声明主函数之前包含 SDL.h,并且需要链接到 SDL.lib 和 SDLmain.lib。

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

关于c++ - 如何获得最小的 SDL 程序以在 visual studio 2008 express 中编译和链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/396183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com