相关疑难解决方法(0)

为什么SDL定义主宏?

在设置SDL时遇到一些问题后,我发现SDL定义了一个替换main的宏:

#define main SDL_main

// And then
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
Run Code Online (Sandbox Code Playgroud)

如果main函数没有定义argcargv参数,这也会产生编译错误.

当我看到它时,这个宏让我很头疼...为什么SDL需要重新定义主要?经过一番搜索,我找到了一些人#undef main,并以正常的方式使用它.

所以这就是问题: 为什么SDL需要重新定义main,它做什么?取消定义是否有任何副作用?

我注意到的一件事是SDL将标准输出和错误重定向到文件(我不想要这种行为),如果我取消定义主要行为,这种行为就会停止.

c++ program-entry-point sdl

36
推荐指数
2
解决办法
2万
查看次数

SDL2:LNK1561:必须定义入口点

我想编译这段代码:

#include <SDL.h>

int main(int argc, char* argv[]) {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但它无法联系起来: Error 1 error LNK1561: entry point must be defined

这个库里有一些奇怪的代码:http://hg.libsdl.org/SDL/file/75726efbf679/include/SDL_main.h

#define main    SDL_main
Run Code Online (Sandbox Code Playgroud)

我也加入SDL2.lib;SDL2main.lib了Project Settings => Linker => Input.

我该怎么做才能运行这个项目?
VS 2012 SP3,空C++项目.

c c++ sdl visual-c++ sdl-2

15
推荐指数
2
解决办法
3万
查看次数

标签 统计

c++ ×2

sdl ×2

c ×1

program-entry-point ×1

sdl-2 ×1

visual-c++ ×1