📄 vc++ 2005编译出程序在xp下执行出错的解决方法 - 王涛的专栏 - csdnblog.htm
字号:
<H3 class=listtitle>存档</H3>
<UL class=list>
<LI><A
href="http://blog.csdn.net/wtxidian/archive/2007/07.aspx">2007年07月(2)</A>
<LI><A
href="http://blog.csdn.net/wtxidian/archive/2007/06.aspx">2007年06月(7)</A>
<LI><A
href="http://blog.csdn.net/wtxidian/archive/2007/05.aspx">2007年05月(4)</A>
<LI><A
href="http://blog.csdn.net/wtxidian/archive/2007/02.aspx">2007年02月(1)</A>
<LI><A
href="http://blog.csdn.net/wtxidian/archive/2007/01.aspx">2007年01月(11)</A>
<LI><A
href="http://blog.csdn.net/wtxidian/archive/2006/12.aspx">2006年12月(1)</A>
<LI><A
href="http://blog.csdn.net/wtxidian/archive/2006/08.aspx">2006年08月(5)</A>
<LI><A
href="http://blog.csdn.net/wtxidian/archive/2006/07.aspx">2006年07月(5)</A></LI></UL><SPAN
id=Anthem_RecentComments_ltlComments__><SPAN id=RecentComments_ltlComments>
<H3 class=listtitle>最近评论</H3>
<UL class=list>
<LI class=listitem>flypigluo:<A title="点击查看《回复:jrtplib指南 》"
href="http://blog.csdn.net/wtxidian/archive/2007/06/23/1663812.aspx#593257">王老师:<BR>您好!
看了你的关于jrtpLib的文章,收获很多。<BR>这里有个问题想向您请教下:<BR>客户端和服务器端如何能知道对方网络断开了。<BR>我是这么想的,如果服务器知道客户端断开了,就可以把它DeleteDestination掉,问题是我不知道对方断了。<BR></A></LI></UL></SPAN></SPAN><BR><BR></DIV>
<DIV id=main>
<DIV class=Tag>
<SCRIPT language=javascript
src="VC++ 2005编译出程序在XP下执行出错的解决方法 - 王涛的专栏 - CSDNBlog.files/urltag.aspx"></SCRIPT>
<DIV style="CLEAR: both"></DIV></DIV><SPAN class=PreAndNext
id=viewpost.ascx_PreviousAndNextEntriesUp>
<DIV align=center><A
href="http://blog.csdn.net/wtxidian/archive/2007/01/25/1493586.aspx">上一篇: 小知识:RGB与YUV----摘自《DirectShow实务精选》
作者:陆其明</A> | <A
href="http://blog.csdn.net/wtxidian/archive/2007/01/24/1492436.aspx">下一篇: Windows
API函数大全(转) </A></DIV></SPAN><BR>
<SCRIPT>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</SCRIPT>
<DIV class=post>
<DIV class=postTitle><A
href="http://blog.csdn.net/wtxidian/archive/2007/01/25/1493353.aspx"><IMG
height=13 src="VC++ 2005编译出程序在XP下执行出错的解决方法 - 王涛的专栏 - CSDNBlog.files/zhuan.gif"
width=15 border=0> VC++ 2005编译出程序在XP下执行出错的解决方法</A> </DIV>
<DIV class=postText>
<DIV class=tit></DIV>
<DIV class=date>2006年09月18日 星期一 02:10</DIV>
<TABLE style="TABLE-LAYOUT: fixed">
<TBODY>
<TR>
<TD>
<DIV class=cnt>这个问题主要出现在XP环境下运行由Visual
C++2003/2005编译的MFC程序时<BR>问题现象是XP运行此类程序时,报错"由于应用程序配置不正确,应用程序未能启动.重新安装应用程序可能会纠正这个问题"<BR>这个问题似乎许多人遇见过.在CSDN和微软社区里面都有人提到.但是没有完整的解决方案<BR>这个问题的解决一共会遇见2个子问题
</DIV>
<DIV class=cnt></DIV>
<DIV class=cnt>下面是一张可能发生冲突的列表<BR>若要使用此运行时库 请忽略这些库 <BR>单线程 (libc.lib)
libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib <BR>多线程
(libcmt.lib) libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib <BR>使用
DLL 的多线程 (msvcrt.lib)
libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib <BR>调试单线程
(libcd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib
<BR>调试多线程 (libcmtd.lib)
libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib <BR>使用 DLL 的调试多线程
(msvcrtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib</DIV>
<DIV class=cnt></DIV>
<P class=cnt> </P>
<P class=cnt>最早出现这个错误我和许多人认为的一样<BR>认为是缺乏DLL库文件导致.但是在测试机复制了DLL甚至安装了.net
framework
2.0以后<BR>都无法解决问题,最后确认不是由缺乏DLL所致<BR>因为程序是纯win32的应用程,非托管代码,所以也无需.net
framework</P>
<P class=cnt>Visual C++2003/2005默认的MFC程序是使用动态MFC库(Use MFC in a Shared
DLL)来链接的<BR>而动态MFC库使用的是Multi-threaded DLL
(/MD)<BR>由于XP对于PE文件格式监测更加严格.<BR>就会导致部分使用多线程DLL的可执行文件在调用的时候出错<BR>修改项目属性的编译开关<BR>Project->Property->configuration
Properties->C/C++->Code Generation->Runtime
Library<BR>修改成Multi-threaded
(/MT)<BR>修改了Runtime类型以后<BR>需要将MFC的编译类型也改成静态库<BR>Project->Property->configuration
Properties->General->Use of MFC<BR>修改成Use MFC in a Static
Library<BR>一部分情况下在这步就能解决问题<BR>另外一部分情况会遇见如下情况<BR>编译器报错</P>
<P class=cnt><BR>CODE:<BR>nafxcw.lib(afxmem.obj) : error LNK2005: "void *
__cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in
libcpmt.lib(newaop.obj)<BR>[Copy to clipboard]</P>
<P
class=cnt><BR>产生这个问题的原因是库依赖关系<BR>在Project->Property->configuration
Properties->Linker->Command
Line<BR>加入编译开关/verbose:lib可以显示详细的库链接顺序</P>
<P class=cnt>CODE:</P>
<P class=cnt>------ Build started: Project: PerfMonDemo, Configuration:
Release Win32 ------<BR>Linking...<BR>Searching libraries<BR>Searching
d:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\pdh.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\lib\DelayImp.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio 8\VC\lib\libcpmt.lib:<BR>Searching
d:\Program Files\Microsoft Visual Studio
8\VC\atlmfc\lib\nafxcw.lib:<BR>nafxcw.lib(afxmem.obj) : error LNK2005:
"void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already
defined in libcpmt.lib(newaop.obj)<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\lib\libcmt.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\kernel32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\user32.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\msimg32.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\winspool.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\shell32.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\shlwapi.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\uuid.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\oledlg.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\ole32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\oleaut32.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\urlmon.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib:<BR>Searching
d:\Program Files\Microsoft Visual Studio
8\VC\atlmfc\lib\atls.lib:<BR>Searching d:\Program Files\Microsoft Visual
Studio 8\VC\PlatformSDK\lib\ws2_32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\mswsock.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\oleacc.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\pdh.lib:<BR>Searching
d:\Program Files\Microsoft Visual Studio
8\VC\lib\DelayImp.lib:<BR>Searching d:\Program Files\Microsoft Visual
Studio 8\VC\lib\libcpmt.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\atlmfc\lib\nafxcw.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio 8\VC\lib\libcmt.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\kernel32.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\user32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:<BR>Searching
d:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\msimg32.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\winspool.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\shell32.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\shlwapi.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\uuid.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\oledlg.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\ole32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\oleaut32.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\urlmon.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib:<BR>Searching
d:\Program Files\Microsoft Visual Studio
8\VC\atlmfc\lib\atls.lib:<BR>Searching d:\Program Files\Microsoft Visual
Studio 8\VC\PlatformSDK\lib\ws2_32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\mswsock.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\oleacc.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\pdh.lib:<BR>Searching
d:\Program Files\Microsoft Visual Studio
8\VC\lib\DelayImp.lib:<BR>Searching d:\Program Files\Microsoft Visual
Studio 8\VC\lib\libcpmt.lib:<BR>Finished searching libraries<BR>Searching
libraries<BR>Searching d:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\pdh.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\lib\DelayImp.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio 8\VC\lib\libcpmt.lib:<BR>Searching
d:\Program Files\Microsoft Visual Studio
8\VC\atlmfc\lib\nafxcw.lib:<BR>Searching d:\Program Files\Microsoft Visual
Studio 8\VC\lib\libcmt.lib:<BR>Searching d:\Program Files\Microsoft Visual
Studio 8\VC\PlatformSDK\lib\kernel32.lib:<BR>Searching d:\Program
Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\user32.lib:<BR>Searching d:\Program Files\Microsoft
Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:<BR>Searching d:\Program
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -