VC2005程序的一个运行错误 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。
方法一:
在C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:
msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest
把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。
其他release版,MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!
方法二:
修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。
方法三:
工程-》属性-》配置属性-》常规-》MFC的使用,选择"在静态库中使用mfc"
这样生成的exe文件应该就可以在其他机器上跑了。
方法四:
你的vc8安装盘上找到再分发包vcredist_xxx.exe和你的程序捆绑安装
MFC程序错误问题:
MFC程序错误,最早出现这个错误我和许多人认为的一样认为是缺乏DLL库文件导致.但是在测试机复制了DLL甚至安装了.net framework 2.0以后 都无法解决问题,最后确认不是由缺乏DLL所致 因为程序是纯win32的应用程,非托管代码,所以也无需.net framework 。
Visual C++2003/2005默认的MFC程序是使用动态MFC库(Use MFC in a Shared DLL)来链接的 而动态MFC库使用的是Multi-threaded DLL (/MD) 由于XP对于PE文件格式监测更加严格. 就会导致部分使用多线程DLL的可执行文件在调用的时候出错 修改项目属性的编译开关
Project->Property->configuration Properties->C/C++->Code Generation->Runtime Library
修改成Multi-threaded (/MT)
修改了Runtime类型以后
需要将MFC的编译类型也改成静态库
Project->Property->configuration Properties->General->Use of MFC
修改成Use MFC in a Static Library 一部分情况下在这步就能解决问题
另外一部分情况会遇见如下情况 编译器报错
CODE:
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmt.lib(newaop.obj)
[Copy to clipboard]
产生这个问题的原因是库依赖关系
在Project->Property->configuration Properties->Linker->Command Line
加入编译开关/verbose:lib可以显示详细的库链接顺序
CODE:
------ Build started: Project: PerfMonDemo, Configuration: Release Win32 ------
Linking...
Searching libraries
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\pdh.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\DelayImp.lib:
.................
Searching d:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\nafxcw.lib:
Finished searching libraries
.\Release/PerfMonDemo.exe : fatal error LNK1169: one or more multiply defined symbols found
Build log was saved at "file://d:\Dev\Performance Monitor\Release\BuildLog.htm"
PerfMonDemo - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我们发现在libcpmt.lib声明过的operator new在nafxcw.lib中再次定义
解决方法如下
Project->Property->configuration Properties->Linker->Input->Additional Dependencies
加入
nafxcw.lib
libcpmt.lib
Project->Property->configuration Properties->Linker->Input->Ignore Specific Library
加入
nafxcw.lib
libcpmt.lib
这样链接程序就不会先按照默认顺序来连接这两个库文件 而是在最后在加入对他们的引用.这样就避免了这个问题 下面是一张可能发生冲突的列表
若要使用此运行时库 请忽略这些库
单线程 (libc.lib) libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
多线程 (libcmt.lib) libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
使用 DLL 的多线程 (msvcrt.lib) libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
调试单线程 (libcd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib
调试多线程 (libcmtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib
使用 DLL 的调试多线程 (msvcrtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib
分享到:
相关推荐
今天在准备发布用VS2005写的那个程序时,拷贝到我同事机器上,双击突然出现了“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题“,这个问题很让我意外,以前只出现过缺少DLL的...
文明6启动时报错无法启动微软VC安装运行程序,需要安装相关Microsoft Visual C++ Redistributable Latest Supported Downloads
VC 中启动另外一个应用程序的方法.docVC 中启动另外一个应用程序的方法.docVC 中启动另外一个应用程序的方法.docVC 中启动另外一个应用程序的方法.docVC 中启动另外一个应用程序的方法.docVC 中启动另外一个应用程序...
vc++2005限制只能启动一个程序或者进程,相同的自动退出后者,用于限制启动一个客户端。
每日提醒程序,定时启动应用程序。运行环境VC 每日提醒程序,定时启动应用程序。运行环境VC
VC源码 启动其它应用程序,注册琢项添加自启动
PCI测试应用程序VC PCI测试应用程序VC PCI测试应用程序VC
vc在一个程序后启动另一个程序
应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参考应用程序事件日志或使用命令行sxstrace.exe
VC 画图程序 MFC应用VC 画图程序 MFC应用VC 画图程序 MFC应用VC 画图程序 MFC应用VC 画图程序 MFC应用VC 画图程序 MFC应用VC 画图程序 MFC应用
本程序为Visual C++来制作通用安装和卸载程序,使你拥有一个独具特色的通用安装和卸载程序。 安装程序处理包括: (1)将zip包应用程序文件解压到安装目录; (2)创建桌面和开始菜单快捷方式; (3)在注册表写入...
基于VC6构建,单文档应用程序结构,展示了消息处理,菜单与对话框定制,流式文件存储以及OOP思想。
python3.6 安装完成后报运行错误,0xc000007b,网上搜索了一大堆说缺少VC运行环境,但是下载下来VC环境安装又报错误, 弄了半天终于弄出来了。我把缺少的所有dll都打包成一个压缩包,供大家使用,使用说明,把本压缩...
截获你的应用程序调用的任何输入函数,vc 源程序.
由vc2003开发的Demo 该程序不显示对话框界面;对特定的程序进行重启。 1.如果程序中调用该exe时:需要加入命令行参数 ...3.同时你可对该程序做一些改动,使该程序成为一个守护进程的程序,也比较简单
可以修复由 Microsoft Visual C++ 8.0(CRT项目和MFC项目的Debug版) 和 Microsoft Visual Studio 9.0(CRT项目的Debug版) 编写的软件在其他机器上运行时出现的 ...重新安装应用程序可能纠正这个问题。” 这样的问题。
VC_MFC应用程序开发,非常不错的一本书,希望和大家分享!
windows服务启动应用程序,windows服务默认在Session 0,不在当前桌面,启动的程序默认也在那个Session 0,所以你看不到程序界面, 用CreateProcessAsUser启动应用程序才可以看到界面
VC写的一个应用程序管理器源码,实现了部分功能,有一定的参考价值
单文档应用程序,实现多个界面的切换,而且加入多种控件的设计,适合初学者交流使用。