Windows 编程

lvyanyurong 2008-10-27 09:16:44
我编了一个程序为什么在编译的时候出现了错误说:“MessageBOX”undeclared identifier
为什么啊?
#include<WINDOWS.H>

int WINAPI WINMain( HINSTANCE hinstance,HINSTANCE hPrevinstance,PSTR szCmdLine,int iCmdShow)
{
MessageBOX(NULL,TEXT("Hello,windows98!"),TEXT("HelloMsg"),0);
return 0;
}
...全文
217 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
uponeredrt 2009-04-11
  • 打赏
  • 举报
回复
error LNK2001: unresolved external symbol解决
解决外部符号错误:_main,_WinMain@16,__beginthreadex -!t 'my`yK
在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有柚煤孟钅坎问? 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有: m 1+4 # '
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main ( g d){j
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 OuR5 T>>
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 * _g+&Us1
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex }t, 6 oT
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex <u%N (=9
]wp N" w"
1. Windows子系统设置错误, 提示: )WA5FzPL w
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main * +oJ (e
4f {'{1]\
Windows项目要使用Windows子系统, 而不是Console, 可以这样设置: *^' y#/D g
z !D F-%3|
[Project] --> [Settings] --> 选择"Link"属性页, Qo!
在Project Options中将/subsystem:console改成/subsystem:windows T`H .k"Y{
Xn?{t *{
2. Console子系统设置错误, 提示: vwK 7b0M
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 4Y~E` L0,
8 % P ><"
控制台项目要使用Console子系统, 而不是Windows, 设置: *Cl5Y': |h
sipSn 4 _
[Project] --> [Settings] --> 选择"Link"属性页, WveN']q \
在Project Options中将/subsystem:windows改成/subsystem:console BR4C@ Z
1 v BkC&
3. 程序入口设置错误, 提示: dy2 $ &$=
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 s P.>uExt
G- (k~1 q
通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口: r#~P5[aV
Os hl6 i
[Project] --> [Settings] --> 选择"Link"属性页, "1zk_#B *
在Category中选择Output, p HGR L
再在Entry-point symbol中填入wWinMainCRTStartup, 即可 >I C }SZ
F)c[@\ .dm
4. 线程运行时库设置错误, 提示: X ;t_- f
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex AmiBqZTp
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex sz 23_{c?
o z! {Fd-
这是因为MFC要使用多线程时库, 需要更改设置: L a-Y,1x](
uA k>h^pbM
[Project] --> [Settings] --> 选择"C/C++"属性页, '%ET|1# SO
在Category中选择Code Generation, ;Y- M)k(
再在Use run-time library中选择Debug Multithreaded或者multithreaded
ZPZ07117007 2008-12-07
  • 打赏
  • 举报
回复
我照你们的改啦 但是出现了新的问题就是我编辑的窗口的标题栏没有啦 求帮助


谢谢各位!!1
lvyanyurong 2008-10-30
  • 打赏
  • 举报
回复
谢谢各位
九桔猫 2008-10-28
  • 打赏
  • 举报
回复
MessageBOX
MessageBox
lvyanyurong 2008-10-28
  • 打赏
  • 举报
回复
我按着你们说的改了option 里面的内容,可是出现下面的情况:

Linking...
LINK : fatal error LNK1117: syntax error in option "subsystem:console/incremental:yes"
Error executing link.exe.

HelloMsg1.exe - 1 error(s), 0 warning(s)

我也在subsystem:windows /incremental:yes加空格了还是不行,为什么?
《我是菜鸟请教高手》
lvyanyurong 2008-10-28
  • 打赏
  • 举报
回复
我建立工程了啊,Win32 Console Application ,Win32 Application我昨天晚上都试过了,用 WinMain 都不行的
lvyanyurong 2008-10-28
  • 打赏
  • 举报
回复
可是我的VC++[Project] --> [Settings] --> 是灰显,改不了啊!不过还是要感谢你们的指教,谢谢
xiangweixing 2008-10-28
  • 打赏
  • 举报
回复
因为你建的是Win32 Console Application 或者你没建工程直接建的一个 cpp文件 程序默认它为Win32 Console Application所以导致不需要 WinMain 而需要 main 入口函数
summericeyl 2008-10-28
  • 打赏
  • 举报
回复
呃,楼上说的不错,不过有更好的方法
进入
[Project] --> [Settings] --> 选择"Link"属性页
看到Project Options
找到
/subsystem:windows或者subsystem:console
把这个删掉即可了
天空海阔66 2008-10-27
  • 打赏
  • 举报
回复
C/C++控制台程序都是从main函数开始执行的,而窗口界面的GUI程序则是从WinMain开始执行。
所以链接器以为此程序是控制台程序,查找main入口,显然会出错。
1. Windows子系统设置错误, 提示:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Windows项目要使用Windows子系统, 而不是Console, 可以这样设置:
[Project] --> [Settings] --> 选择"Link"属性页, 在Project Options中将/subsystem:console改成/subsystem:windows
2. Console子系统设置错误, 提示:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain
控制台项目要使用Console子系统, 而不是Windows, 设置:
[Project] --> [Settings] --> 选择"Link"属性页, 在Project Options中将/subsystem:windows改成/subsystem:console
3. 程序入口设置错误, 提示:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain
通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口:
[Project] --> [Settings] --> 选择"Link"属性页,
在Category中选择Output,
再在Entry-point symbol中填入wWinMainCRTStartup, 即可
lvyanyurong 2008-10-27
  • 打赏
  • 举报
回复
是的我后来发现了,是MessageBox的大小写没有注意,上面的问题解决了但是又出现其他的问题:LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/HelloMSG.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

HelloMSG.exe - 2 error(s), 0 warning(s)

问题出在int WINAPI WINMain()上面,把它改成int main()就没有问题了。但我不知这是为什么?请教高手
lvyanyurong 2008-10-27
  • 打赏
  • 举报
回复
问题出在int WINAPI WINMain()上面,把它改成int main()就没有问题了。但我不知这是为什么?
王小工 2008-10-27
  • 打赏
  • 举报
回复
应该就是大小 写的问题吧
天空海阔66 2008-10-27
  • 打赏
  • 举报
回复

//MessageBOX(NULL,TEXT("Hello,windows98!"),TEXT("HelloMsg"),0); //注意MessageBox的大小写
MessageBox(NULL,TEXT("Hello,windows98!"),TEXT("HelloMsg"),0);
天空海阔66 2008-10-27
  • 打赏
  • 举报
回复
#include <WINDOWS.H> 

//int WINAPI WINMain( HINSTANCE hinstance,HINSTANCE hPrevinstance,PSTR szCmdLine,int iCmdShow) //pstr掉了L
int WINAPI WinMain ( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)

{
//MessageBOX(NULL,TEXT("Hello,windows98!"),TEXT("HelloMsg"),0); //注意MessageBox的大小写
MessageBox(NULL,TEXT("Hello,windows98!"),TEXT("HelloMsg"),0);
return 0;
}
lvyanyurong 2008-10-27
  • 打赏
  • 举报
回复
我在新建的时候用的是Win32 Application
lvyanyurong 2008-10-27
  • 打赏
  • 举报
回复
上面的问题解决了但是又出现其他的问题:LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/HelloMSG.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

HelloMSG.exe - 2 error(s), 0 warning(s)
不知道什么意思?请教高手,我是刚刚学习
lvyanyurong 2008-10-27
  • 打赏
  • 举报
回复
我是在VC++编译器上做的
wuyu637 2008-10-27
  • 打赏
  • 举报
回复
你确定你建立的是win32的非控制台的工程

33,319

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧