请教VC编程高手,

[复制链接]
 楼主| cn_wu 发表于 2009-5-28 23:17 | 显示全部楼层 |阅读模式
<br />VC6&nbsp;在XP系统,可以编译源文件(compile),却不能执行exe文件(build),是怎么回事呢?俺本来是从事硬件设计的,最近才兴趣用API编程,望高手们不吝赐教.源程序如下:<br /><br /><br /><br /><br />#include&nbsp;&ltwindows.h&gt<br /><br />LPCTSTR&nbsp;lpszAppName=TEXT(&quot;MyApp&quot;);<br />LPCTSTR&nbsp;lpszTitle=TEXT(&quot;My&nbsp;Application&quot;);<br /><br />LRESULT&nbsp;CALLBACK&nbsp;WndProc(HWND,UINT,WPARAM,LPARAM);<br /><br />HINSTANCE&nbsp;hInstance;<br /><br /><br />int&nbsp;APIENTRY&nbsp;WinMain(HINSTANCE&nbsp;hInstance,HINSTANCE&nbsp;hPrevInstance,LPSTR&nbsp;lpCmdLine,int&nbsp;nCmdShow)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSG&nbsp;msg;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HWND&nbsp;hwnd;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WNDCLASS&nbsp;wc;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wc.style=CS_HREDRAW|CS_VREDRAW;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wc.lpfnWndProc=(WNDPROC)WndProc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wc.cbClsExtra=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wc.cbWndExtra=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wc.hInstance=hInstance;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wc.hCursor=LoadCursor(NULL,IDC_ARROW);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wc.hbrBackground=HBRUSH(GetStockObject(WHITE_BRUSH));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wc.lpszMenuName=NULL;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wc.lpszClassName=lpszAppName;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegisterClass(&wc);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hwnd=CreateWindow(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpszAppName,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpszTitle,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WS_OVERLAPPEDWINDOW,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hInstance,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowWindow(hwnd,nCmdShow);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UpdateWindow(hwnd);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(GetMessage(&msg,NULL,0,0))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TranslateMessage(&msg);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DispatchMessage(&msg);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;msg.wParam;<br /><br /><br />}<br /><br /><br />LRESULT&nbsp;CALLBACK&nbsp;WndProc(HWND&nbsp;hwnd,UINT&nbsp;message,WPARAM&nbsp;wParam,LPARAM&nbsp;lParam)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;MsgLBTN[]=&quot;L&nbsp;botton&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;MsgRBTN[]=&quot;R&nbsp;botton&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(message)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;WM_RBUTTONDOWN:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBeep(MB_ICONINFORMATION);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;MessageBox(GetFocus(),MsgRBTN,&quot;Message&quot;,MB_OK|MB_ICONINFORMATION);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;WM_LBUTTONDOWN:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBeep(MB_ICONINFORMATION);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />MessageBox(GetFocus(),MsgLBTN,&quot;Message&quot;,MB_OK|MB_ICONINFORMATION);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;WM_DESTROY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostQuitMessage(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefWindowProc(hwnd,message,wParam,lParam);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br /><br /><br />}<br /><br /><br />上面源码只是要实现简单的界面,当有鼠标按键按下时出现提示框并喇叭会叫一下.<br /><br /><font color=#FF0000>在VC6.0中建立工程,将源文件命名为a.cpp,执行compile,出现以后提示:</font><br /><br />--------------------Configuration:&nbsp;a&nbsp;-&nbsp;Win32&nbsp;Debug--------------------<br />Compiling...<br />a.cpp<br /><br />a.obj&nbsp;-&nbsp;0&nbsp;error(s),&nbsp;0&nbsp;warning(s)<br /><br /><br /><font color=#FF0000>再执行build&nbsp;a.exe,却出现:<br /></font><br /><br />--------------------Configuration:&nbsp;a&nbsp;-&nbsp;Win32&nbsp;Debug--------------------<br />Linking...<br />LINK&nbsp;:&nbsp;fatal&nbsp;error&nbsp;LNK1168:&nbsp;cannot&nbsp;open&nbsp;Debug/a.exe&nbsp;for&nbsp;writing<br />Error&nbsp;executing&nbsp;link.exe.<br /><br />a.exe&nbsp;-&nbsp;1&nbsp;error(s),&nbsp;0&nbsp;warning(s)<br /><br /><br /><br /><font color=#FF0000>在工程的文件夹下有一debug文件夹,之中有一个名为a的无后缀文件.<br /><br /></font><br />请问是什么原因使得不能执行程序呢?<br />奇怪的是,我记得以前也曾编译类似的源文件,但没有问题(操作系统重装过几个不同版本了),但在一段时间后莫名其妙就这样不能执行程序了.<br />
 楼主| cn_wu 发表于 2009-5-28 23:19 | 显示全部楼层

续上,

VC与XP一样,也重装了好几次,但结果一样.
McuPlayer 发表于 2009-5-28 23:38 | 显示全部楼层

不玩SDK好多年

那东西重复劳动太多了
 楼主| cn_wu 发表于 2009-5-28 23:58 | 显示全部楼层

无计,

最近想搞个上位机小程序。<br /><br />但主贴这个问题好象本身不是源码有问题。
 楼主| cn_wu 发表于 2009-5-29 02:30 | 显示全部楼层

呵呵,

<br />问题自己解决,多谢谷歌找到的资料给我灵感.好象碰到和我一样的问题的人还不少,互相学习,为了大家少走弯路,我还是说一下。<br />其实在build&nbsp;之后执行excute&nbsp;exe,程序一直就在运行了,只不过代码有错误,窗口不能出现,我误以为VC有问题,多按了几下build和excute&nbsp;exe,结果多个进程实例在运行(按CTRL+ALT+DEL,在进程表中就可以看到有多个a.exe在运行),其实在按第二下build,就会出现下面的错误了:<br /><br />--------------------Configuration:&nbsp;a&nbsp;-&nbsp;Win32&nbsp;Debug--------------------<br />Linking...<br />LINK&nbsp;:&nbsp;fatal&nbsp;error&nbsp;LNK1168:&nbsp;cannot&nbsp;open&nbsp;Debug/a.exe&nbsp;for&nbsp;writing<br />Error&nbsp;executing&nbsp;link.exe.<br /><br />a.exe&nbsp;-&nbsp;1&nbsp;error(s),&nbsp;0&nbsp;warning(s)<br /><br />在上面r窗口函数改为:<br /><br />LRESULT&nbsp;CALLBACK&nbsp;WndProc(HWND&nbsp;hwnd,UINT&nbsp;message,WPARAM&nbsp;wParam,LPARAM&nbsp;lParam)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;MsgLBTN[]=&quot;You&nbsp;keydown&nbsp;L&nbsp;botton&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;MsgRBTN[]=&quot;You&nbsp;keydown&nbsp;R&nbsp;botton&quot;;<br /><br /><br />&nbsp;&nbsp;&nbsp;<font color=#FF0000>&nbsp;int&nbsp;x;<br /></font><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HDC&nbsp;hdc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAINTSTRUCT&nbsp;ps;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(message)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;WM_PAINT:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdc=BeginPaint(hwnd,&ps);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EndPaint(hwnd,&ps);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#FF0000>&nbsp;x=0;<br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;WM_RBUTTONDOWN:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBeep(MB_ICONINFORMATION);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />MessageBox(GetFocus(),MsgRBTN,&quot;Message&quot;,MB_OK|MB_ICONINFORMATION);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#FF0000>x=0;<br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;WM_LBUTTONDOWN:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBeep(MB_ICONINFORMATION);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />MessageBox(GetFocus(),MsgLBTN,&quot;Message&quot;,MB_OK|MB_ICONINFORMATION);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#FF0000>&nbsp;x=0;<br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;WM_DESTROY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostQuitMessage(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#FF0000>&nbsp;&nbsp;&nbsp;x=0;<br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#FF0000>&nbsp;&nbsp;x=</font>DefWindowProc(hwnd,message,wParam,lParam);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><font color=#FF0000>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(x);</font><br /><br /><br />}<br /><br />&nbsp;<br />上面红字是新加改进的主要内容。然后热键激活进程表,在进程表中关闭多之前误操作的多个a.exe进程,全部删除。此时重新compile和build,就可以执行excute&nbsp;exe命令了。<br /><br /><br />
high 发表于 2009-5-29 11:08 | 显示全部楼层

不错. 集腋成裘.

  
fengfeng 发表于 2009-8-2 09:51 | 显示全部楼层
为什么不用MFC呢?
x32k 发表于 2009-9-9 17:54 | 显示全部楼层
SDK编写的程序,可移植性好,执行效率高
而MFC编写生成的可执行文件,一定要绑定MFC42.DLL或者文件大

支持SDK
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

6

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部