MASMPlus编译出错:error LNK2001: unresolved external symbol _WinMainCRTStartup
2012-09-24 19:28
411 查看
初学汇编,感觉很多不懂。不过那也是,如果懂了的话就不用学了,从无到有学习一门编程语言果然不是那么容易的一件事。
学习汇编总得要有一款汇编软件才行,没理由只是使用Windows自带的DEBUG。于是上了比较有名的AOGO汇编小站,浏览了一下,看到首页就有提示软件下载,非常好,不用我找了。虽然这个MASMPLUS不是老师推荐的那个,不过应该也不会差吧。
下载好了之后直接安装完毕,我马上就打开软件打算试一试这个东西。按着书上的一个简单程序打了上去,然后按那个“一步完成”按钮,下面马上显示出错。靠,不是吧,我对着书本来写上去的啊,难道这个“一步完成”有缺陷的?于是我试了试一步一步来进行。先是编译成“ASM”文件,然后接着连接成“OBJ”文件。就在连接成“OBJ”文件的这个步骤里面提示错误了。提示如下:
“LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
2.exe : fatal error LNK1120: 1 unresolved externals”
搞什么啊,难道是我安装在D盘不行?难道要默认安装在C盘?不太可能吧?嗯,应该跟这个没关系。刚刚都没开始正式练习就来了这么个拦路虎,真有点郁闷 -_-!
不管那么多,先看看它提示说什么问题吧。虽然我英语不怎么好,但也总算认得它总体意思,大概就是说那个叫WinMainCRTStartup什么的外部符号未解决。应该是没找到这个东西之类吧。
好,问题大致上了解了。我根本不知道那个是什么东西,只好自己摸索一下了。在确定自己没有打错字母的之后,看来问题应该不是出在自己身上,不过这个软件才刚刚下载回来的啊,我都没有进行什么其他设置,也没有删除什么文件啊。只好从其他地方入手思考了。
经过参考了相关的资料和进行了一些思考之后,总算给我搞定了。原来只要在“配置”标签那里选择“系统配置”,再在编译/脚本那里勾上单独文件默认使用DOS模式(第二链接器)就可以了。
总算是能够编译运行了。用个软件都要花这么些时间,真够无奈的了,不过还好,起码问题是解决了。
总结一下
其实,问题的原因是:把编译Windows程序的选项打开了,这是一个DOS程序,当然不会有“ _WinMainCRTStartup”这种东西,这是Windows程序才用,就在外部引用的定义文件里。因此,选择使用DOS模式的就可以解决问题了。
学习汇编总得要有一款汇编软件才行,没理由只是使用Windows自带的DEBUG。于是上了比较有名的AOGO汇编小站,浏览了一下,看到首页就有提示软件下载,非常好,不用我找了。虽然这个MASMPLUS不是老师推荐的那个,不过应该也不会差吧。
下载好了之后直接安装完毕,我马上就打开软件打算试一试这个东西。按着书上的一个简单程序打了上去,然后按那个“一步完成”按钮,下面马上显示出错。靠,不是吧,我对着书本来写上去的啊,难道这个“一步完成”有缺陷的?于是我试了试一步一步来进行。先是编译成“ASM”文件,然后接着连接成“OBJ”文件。就在连接成“OBJ”文件的这个步骤里面提示错误了。提示如下:
“LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
2.exe : fatal error LNK1120: 1 unresolved externals”
搞什么啊,难道是我安装在D盘不行?难道要默认安装在C盘?不太可能吧?嗯,应该跟这个没关系。刚刚都没开始正式练习就来了这么个拦路虎,真有点郁闷 -_-!
不管那么多,先看看它提示说什么问题吧。虽然我英语不怎么好,但也总算认得它总体意思,大概就是说那个叫WinMainCRTStartup什么的外部符号未解决。应该是没找到这个东西之类吧。
好,问题大致上了解了。我根本不知道那个是什么东西,只好自己摸索一下了。在确定自己没有打错字母的之后,看来问题应该不是出在自己身上,不过这个软件才刚刚下载回来的啊,我都没有进行什么其他设置,也没有删除什么文件啊。只好从其他地方入手思考了。
经过参考了相关的资料和进行了一些思考之后,总算给我搞定了。原来只要在“配置”标签那里选择“系统配置”,再在编译/脚本那里勾上单独文件默认使用DOS模式(第二链接器)就可以了。
总算是能够编译运行了。用个软件都要花这么些时间,真够无奈的了,不过还好,起码问题是解决了。
总结一下
其实,问题的原因是:把编译Windows程序的选项打开了,这是一个DOS程序,当然不会有“ _WinMainCRTStartup”这种东西,这是Windows程序才用,就在外部引用的定义文件里。因此,选择使用DOS模式的就可以解决问题了。
相关文章推荐
- MASMPlus编译出错:error LNK2001: unresolved external symbol _WinMainCRTStartup
- BCGControlBar 编译出错 -- error LNK2001: unresolved external symbol
- VC编译出错error LNK2001: unresolved external symbol _WinMain@16
- VC++编译出错问题(3)error LNK2001: unresolved external symbol "public:xxxxx
- snmp VC6.0 编译error LNK2001: unresolved external symbol出错解决办法
- LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup编译出错的解决方法
- VC++ 6中编译Unicode时出现error LNK2001: unresolved external symbol _WinMain@16
- VC++编译DirectShow ActiveX时error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates"
- glew库编译时问题(error LNK2001: unresolved external symbol *)
- VC编译错误:LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main编译错误
- 【编译问题】error LNK2001: unresolved external symbol __iob
- DSHOW编译错误:strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)
- error LNK2001:unresolved external symbol __imp__编译错误解决方法
- VC 6.0 serverDlg.obj : error LNK2001: unresolved external symbol __imp__listen@8编译错误
- (已解决!GUID的外部定义和内部定义)VC编译错误:error LNK2001: unresolved external symbol _GUID_DEVINTERFACE_USB_DEVICE
- [Qt4]VS2010编译提示error LNK2001: unresolved external symbol "public: virtual struct QMetaObject等错误解决方案
- 编译出错:fatal error C1001: INTERNAL COMPILER ERROR 和 链接出错 unresolved external symbol _WinMain@16
- error LNK2001: unresolved external symbol _main(控制台程序与GUI程序编译开关)
- 编译时遇到error LNK2001: unresolved external symbol "private: static
- VC编译错误:error LNK2001: unresolved external symbol _GUID_DEVINTERFACE_USB_DEVICE