写好的MFC程序不能在未装VS的机器上运行

九州剑王 2011-10-11 10:00:59
我的操作系统windows7,写好了个MFC程序,把redist文件夹里的DLL也都一起放虚拟机的XP和WIN7里了,以前写的那些MFC程序有了这些DLL什么的,都可以运行的,但是这个小程序竟然总不能运行,我用depands.exe查了下dll,说 “警告: 由于在延时加载依赖模块中丢失导入函数,至少有一个模块具有不能解析的导入 ” COMCTL32.DLL SHLWAPI.DLL IEFRAME.DLL这几个貌似有问题,我重新注册,还总说“模块已加载,但对DLLRegisterServer的调用失败” 其实用静态库DLL编译的大的EXE就能运行,但是我们老大让我自己解决问题,带着DLL发行...给他跪下了,我貌似还是得找到些DLL打包直到能运行才行,求教啊!必高分相赠!!!
应该不是公司DLL的问题,因为就用了两个静态库lib而已嘛
...全文
273 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
九州剑王 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 oyljerry 的回复:]
引用 8 楼 hfz8867879 的回复:
问题已解决,修改了manifest文件


就用记事本打开 Microsoft.VC90.DebugCRT.manifest

删掉以下内容

<assemblyIdentity type="win32" name="Microsoft.VC90.DebugMFC" version="9.0.30729.1" processorArch……
[/Quote]

嗯嗯,是的,公司自己让写个小程序测试一个分块的算法嘛,所以还是用了debug的版本呢,嘿嘿嘿,多谢老兄啦,经常在帖子里看到您的回复,学到了很多东西呢!
oyljerry 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hfz8867879 的回复:]
问题已解决,修改了manifest文件


就用记事本打开 Microsoft.VC90.DebugCRT.manifest

删掉以下内容

<assemblyIdentity type="win32" name="Microsoft.VC90.DebugMFC" version="9.0.30729.1" processorArchitecture="x86" publicKey……
[/Quote]
应该用Release版本.
oyljerry 2011-10-11
  • 打赏
  • 举报
回复
mpr.dll只有是com组件的DLL,才需要Regsvr32来注册
九州剑王 2011-10-11
  • 打赏
  • 举报
回复
问题已解决,修改了manifest文件


就用记事本打开 Microsoft.VC90.DebugCRT.manifest

删掉以下内容

<assemblyIdentity type="win32" name="Microsoft.VC90.DebugMFC" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
多谢楼上诸位老兄!
九州剑王 2011-10-11
  • 打赏
  • 举报
回复
depends里说没加载上,我手动注册说,已加载mpr.dll,但没有找到DLLRegisterServer输入点,我想静态没问题,应该不是注册dll什么的问题吧,真心哭了
九州剑王 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ycf8788 的回复:]
查看你的所有的.manifest文件
查看版本里面的版本号是不是和你的加入DLL的版本号一样不,是不是所有文件都用
[/Quote]

已将程序debug里的两个manifest,还有C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86文件夹中的CRT和MFC所有文件全复制到EXE所在文件夹了,我觉得既然静态的可以用,我可能就是却了几个DLL或者版本弄错了吧,离成功一步之遥了,求指点!
不二星空 2011-10-11
  • 打赏
  • 举报
回复
查看你的所有的.manifest文件
查看版本里面的版本号是不是和你的加入DLL的版本号一样不,是不是所有文件都用
九州剑王 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huangcheng90 的回复:]
dumpbin
[/Quote]

请老兄明示啊?我用静态DLL弄那个编译,一点问题都没有,可是老大不让用~并且在本机上,EXE无论拿到哪里都可以使用的,公司的DLL全在个文件夹里,没在C盘,我觉得肯定就是缺少微软的DLL吧?但是我已经把redist文件夹所有的DLL那些都拿出来放一起了,还是不能用,平时的情况都是这样子就可行了的呢!觉得不知道是哪里出问题了,说依赖的DLL注册失败什么的,本身就是MS自己的DLL,我不信会失败。。。
Dreadnought 2011-10-11
  • 打赏
  • 举报
回复
dumpbin
九州剑王 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuwen1030 的回复:]
VC6有个工具 名字我忘记了 可以通过这个工具查看程序运行需要哪些DLL文件 楼主找找看吧
[/Quote]

您说的应该就是DEPANDS工具呢

错误: 在 "c:\users\xl\desktop\新建文件夹\CHUNKTEST.EXE" 的并行配置信息包含错误。应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe 工具。 (14001).
警告: 由于在延时加载依赖模块中丢失导入函数,至少有一个模块具有不能解析的导入。
古都一猿 2011-10-11
  • 打赏
  • 举报
回复
VC6有个工具 名字我忘记了 可以通过这个工具查看程序运行需要哪些DLL文件 楼主找找看吧

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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