vc/vs 下sdl连接问题
来源:互联网 发布:cloudflare nginx 编辑:程序博客网 时间:2024/04/25 10:20
VS2005下SDL的编译链接问题
当下载SDL for win32 搭建好编译环境后,建立个win32 控制台 编译SDL 中Demo-- loopave.c程序,有如下link erro:
1>Compiling...
1>loopwave.c
1>Linking...
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>../bin/sdlSample1.exe : fatal error LNK1120: 1 unresolved externals
win32控制台程序的入口函数为main _main 或_tmain. subsystem 已经选择为为win32 console了,所以应该不会出现
启动函数中 _main链接失败的状况。
究其原因是因为SDL有自己的入口函数SDL_main,,,也查看过loopwave.obj发现里面确实没有main _main 而是有SDL_main
_SDL_main,这说明,demo 中的main函数名已被改动了,具体在哪里被改的,应该是在你包含#include "SDL_config.h"中。
查实了下:
在SDL_main.h有下列说明
#define main SDL_main --->我们的main函数名就这边被改变了。
/* The prototype for the application's main() function */
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
由于没有导出main _main在进行链接 当然出现 unresolved external symbol _main.
解决措施1:
很简单,告诉链接器,我们程序的入口函数名 已经改变了,在项目属性里,Linker-->Advanced-->Entry Point 填写SDL_main。这样
___tmainCRTStartup 就会调用入口函数SDL_main
解决措施2:
既然SDL在编译时会改变main函数的名称为SDL_main,,我们可以自己改变main函数名称为其它的名称,如main_t等,然后在项目属性里,Linker-->Advanced-->Entry Point 填写main_t等,这样
___tmainCRTStartup 就会调用入口函数main_t,使用SDL也不会有问题的。
此外当使用gcc编译器,编译SDL程序,也要注意这一点,,我们也需要告诉链接器,入口函数不是main 而是 SDL_main。
链接时只需要加个 _Dmain = SDL_main 即可.
下面是别人的解释,感觉有点问题。
"Compiling program, which uses SDL must be done this way:
g++ -o helloworld -Dmain=SDL_main helloworld.cpp -lmingw32 -lSDLmain -lSDL
That is because SDL uses its own main function,
which sets up some stuff for it,
and users main function must be named SDL_main
(which this -D... directive does - renames it automatically)."
- vc/vs 下sdl连接问题
- vc下配置sdl
- 关于VS下 boost 库连接 libboost_regex-vc??-mt-gd-1_57.lib 找不到问题
- VC++6.0环境下配置SDL
- Vs连接源码问题
- VS2005下SDL的编译链接问题
- VS2005下SDL的编译链接问题
- Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的。而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译、调试。
- VC下连接SQLserver2005
- VC下WMI连接远程主机的问题
- VC++连接数据问题
- 英文Windows下,Visual Studio 2003.net (vs 2003) VC Link信息不全问题的解决
- vc/vs下lua编程环境搭建
- vc\vs下lua编程环境搭建
- 在VC/VS环境下使用Sqlite
- VC++下ADO连接ACCESS
- Visual C++ 2008下,SDL的编译链接问题!
- windows下SDL使用ndk-build编译失败问题
- 软件开发之我剑!----项目的维护和后续开发,上有老下有小
- 4.5.1 Why bother with functions?
- 目标执行的第一天
- 如何判断一个数是不是完全平方数
- WNDCLASS中的style
- vc/vs 下sdl连接问题
- 【工作流进阶】第一篇
- 改良程序的11技巧
- 优酷网网站架构分析
- Firefox和IE之间7个JavaScript的差异
- 旧博客转帖关于qtp的一些脚本
- COM接口聚合实现解惑(C++虚表)
- ADO Recordset to SQLite
- dos学习笔记一之简单dos命令