使用 SDL 库时出现链接器错误:_main 已在 main.obj 中定义
Linker Error when using the SDL Library: _main already defined in main.obj
所以我已经知道为什么会出现这个错误,在 SDL_main.h 文件中创建了一个 'main' 宏,这将导致您的实际主函数出现问题。
只是 none 明显的解决方法似乎对我有帮助。我试过:
用 (int argc, char* argv[]) 定义我的主函数。
像SDL_main.h中的评论建议的那样用C链接试了一下:
* 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
尝试取消定义 main。
为了让主要功能再次正常工作,我可以尝试任何其他技巧吗?
在 main.cpp
文件的顶部也试试这个:
#define SDL_MAIN_HANDLED
这应该会导致 SDL 跳过所有 main
废话。
请注意,它需要在您包含 SDL
:
之前发生
#define SDL_MAIN_HANDLED
#include "SDL2/SDL.h"
所以我已经知道为什么会出现这个错误,在 SDL_main.h 文件中创建了一个 'main' 宏,这将导致您的实际主函数出现问题。
只是 none 明显的解决方法似乎对我有帮助。我试过:
用 (int argc, char* argv[]) 定义我的主函数。
像SDL_main.h中的评论建议的那样用C链接试了一下:
* 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
尝试取消定义 main。
为了让主要功能再次正常工作,我可以尝试任何其他技巧吗?
在 main.cpp
文件的顶部也试试这个:
#define SDL_MAIN_HANDLED
这应该会导致 SDL 跳过所有 main
废话。
请注意,它需要在您包含 SDL
:
#define SDL_MAIN_HANDLED
#include "SDL2/SDL.h"