VS2008 发布程序在未装VS的机器上不能运行

时间:2023-02-21 21:16:00
VS2008 发布程序在未装VS的机器上不能运行, 用的是     静态MFC , /MT     编译,但是在没装VS的机器上不能运行, 将VS2008的一些DLL msvcp90.dll  msvcr90.dll msvcm90.dll  manifest 等文件复制进去依然没效果,装完那个 VS 运行库 vc_credist.exe  就可以,  求高手,怎样才能不装那个运行库,  可以在没装VS的机器上面直接运行

9 个解决方案

#1


你是纯API还是MFC?

#2


怎么个不能运行?是报告配置不正确吗?
另外,装vc运行库与装vs是两件不同的事情

#3


用的是MFC, 这问题弄好半天了,在新装的XP虚拟机中测试报  应用程序初使化(0xc0150002)失败

#4


Configuration->Manifest Tool->Input and Output->Embed Manifest设为No试试
引用 3 楼 jspkiss 的回复:
用的是MFC, 这问题弄好半天了,在新装的XP虚拟机中测试报  应用程序初使化(0xc0150002)失败

#5


2008是中文版的?
那就应该简单了

菜单->项目->你的项目属性->配制属性->MFC的使用->改为"在静态库中使用MFC"就可以了
不过,这个生成的exe会较大
一般,就现在的商业软件开发,也会使用动态MFC ,然后在目标机上安装运行库(vc_credist.exe )

#6


现在就是用的   在静态库中使用MFC,  运行库为   /MT 多线程编译, 使用depends  工具查找需要的DLL, 也都加上了,放在一起了,但在没有装 vc_credist.exe  运行库的电脑上就是不能运行,太怪了,
Embed Manifest  嵌入清单 设为NO 也不行

#7


我的测试没问题
你用了.net和CLR?

#8


哈哈,解决了, 真是要吐血, 是另一个DLL的问题, 最开始版本有两个DLL, 后来将其中一个编译成了静态库,然后再和另一个一起编译生成一个  DLL, 由程序 调用,刚把他们分开了,就好了,在干净虚拟机XP中可以运行了,谢谢各位了

#9


问题解决了,是那DLL问题, 静态库也都重新编译, 然后 DLL 全部重新编译, 就可以运行了, 受不了,原先的静态库版本过期了, 还是要谢谢大家

总结一下:
    发布程序编译使用   静态库中使用MFC,同时运行库设置为  /MT 多线程, 一般情况都可以直接运行了,如果还是出现程序初使化失败  0xC0150002  问题,那就可能是其它模块的问题了

#1


你是纯API还是MFC?

#2


怎么个不能运行?是报告配置不正确吗?
另外,装vc运行库与装vs是两件不同的事情

#3


用的是MFC, 这问题弄好半天了,在新装的XP虚拟机中测试报  应用程序初使化(0xc0150002)失败

#4


Configuration->Manifest Tool->Input and Output->Embed Manifest设为No试试
引用 3 楼 jspkiss 的回复:
用的是MFC, 这问题弄好半天了,在新装的XP虚拟机中测试报  应用程序初使化(0xc0150002)失败

#5


2008是中文版的?
那就应该简单了

菜单->项目->你的项目属性->配制属性->MFC的使用->改为"在静态库中使用MFC"就可以了
不过,这个生成的exe会较大
一般,就现在的商业软件开发,也会使用动态MFC ,然后在目标机上安装运行库(vc_credist.exe )

#6


现在就是用的   在静态库中使用MFC,  运行库为   /MT 多线程编译, 使用depends  工具查找需要的DLL, 也都加上了,放在一起了,但在没有装 vc_credist.exe  运行库的电脑上就是不能运行,太怪了,
Embed Manifest  嵌入清单 设为NO 也不行

#7


我的测试没问题
你用了.net和CLR?

#8


哈哈,解决了, 真是要吐血, 是另一个DLL的问题, 最开始版本有两个DLL, 后来将其中一个编译成了静态库,然后再和另一个一起编译生成一个  DLL, 由程序 调用,刚把他们分开了,就好了,在干净虚拟机XP中可以运行了,谢谢各位了

#9


问题解决了,是那DLL问题, 静态库也都重新编译, 然后 DLL 全部重新编译, 就可以运行了, 受不了,原先的静态库版本过期了, 还是要谢谢大家

总结一下:
    发布程序编译使用   静态库中使用MFC,同时运行库设置为  /MT 多线程, 一般情况都可以直接运行了,如果还是出现程序初使化失败  0xC0150002  问题,那就可能是其它模块的问题了