VS2012 win32 项目 打包问题

borisyue2 2014-08-13 09:47:26
小弟最近进行cocos2dx win32项目开发。
我想对它进行编译打包生成一个 exe文件,可以在任意电脑上运行。
根据网上提示,我需要设置项目属性 把 "代码生成"一栏里的 MD 改为 MT。
改成MT后,在一些干净的系统上测试仍然会报 msvcr110.dll, msvcp120.dll 丢失错误。
从网上资料来看,MT方式 便把所有需要的dll 打包进exe里了。为何仍然报 这些dll丢失的错误呢。
开发环境:win 8.1 64位 vs2012 cocos2dx-3.2rc
测试环境:windows xp 32位, win 7 64位, win 8 pro
各位是如何编译打包win32项目,并可以在任意支持的系统上直接运行,而不会报dll缺失。
...全文
1664 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxd1999 2016-03-16
  • 打赏
  • 举报
回复
选择“在静态库中使用MFC"
super_admi 2016-03-16
  • 打赏
  • 举报
回复
……似乎楼主没弄明白怎么在VS中打包啊! VS中打包是需要建立一个“安装部署”项目的,然后把要打包的内容包含进来,包括注册表,快捷方式,各种依赖项等等,麻烦的情况下,还需要自己写DLL,对安装过程进行定制。
wedssei 2016-03-16
  • 打赏
  • 举报
回复
没有哪个就装哪个呗,去微软官网下载 http://www.henryxi.com/the-program-cant-start-because-msvcr110dll-is-missing
707wk 2016-03-10
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
使用depends.exe在目标机上查看exe依赖的dll缺哪些(红色文字) 然后从开发机上拷贝这些缺的dll到目标机和exe相同的文件夹下。
+1没装vs的机子通常都会报丢失msv***.dll文件
yingzi566 2016-03-10
  • 打赏
  • 举报
回复
也遇到了这个问题。 用VS2012编译的dll,在干净的win2012上使用时,缺少msvcr110.dll。因为是dll,没有直接报错,找了半天才找出原因。 后来从win8.1 64 位OS上拷贝了到相应目录下,解决。 但是我也想编译时直接编译进来啊。
Zealot_Alie 2016-01-01
  • 打赏
  • 举报
回复
楼主最后打包成功了吗?
阿呆_ 2014-08-14
  • 打赏
  • 举报
回复
引用 10 楼 borisyue2 的回复:
[quote=引用 8 楼 Idle_ 的回复:] Visual C++ Redistributable for Visual Studio 2012 The Visual C++ Redistributable Packages install runtime components that are required to run C++ applications built with Visual Studio 2012.
我不想安装它,在新裸机上直接就可以运行的那种。[/quote] 这个没办法,必须安装,直接放相关dll到exe目录下没用,反正只是执行一个redistxxxx.exe而已,你完全可以把这个运行时包放到你安装包中,安装时释放然后执行一下而已,不需要人工干涉。
movsd 2014-08-14
  • 打赏
  • 举报
回复
引用 7 楼 borisyue2 的回复:
回复各位,用depends.exe 查看了,是缺少msvcr110.dll, 从开发机上找到这个文件 复制到 跟exe同一个目录下,然后双击该exe, 没有反应,也不报任何错。 尝试regsvr32 msvcr110.dll 提示说 已加载msvcr110.dll, 但未找到dllregisterserver输入点,无法注册这个文件。 估计是这个dll没有被注册,导致无法运行。 何解?
msvcr110.dll不是COM组件,不需要注册,只要放在程序能找到的目录下就行了
movsd 2014-08-14
  • 打赏
  • 举报
回复
还有种可能就是cocos2dx调用了msvcr110.dll这些文件,这样的话你使用/MT链接也没用,你自己的EXE不需要这些DLL,但你所调用的模块需要这些DLL
赵4老师 2014-08-14
  • 打赏
  • 举报
回复
设置目标类型为xp兼容试试。
borisyue2 2014-08-14
  • 打赏
  • 举报
回复
引用 8 楼 Idle_ 的回复:
Visual C++ Redistributable for Visual Studio 2012 The Visual C++ Redistributable Packages install runtime components that are required to run C++ applications built with Visual Studio 2012.
我不想安装它,在新裸机上直接就可以运行的那种。
modyaj 2014-08-13
  • 打赏
  • 举报
回复
引用 2 楼 borisyue2 的回复:
[quote=引用 1 楼 modyaj 的回复:] 打包弄得少,但我记得打包之前不是要检测依赖项吗?检测到了后全部打包进去应该是没问题的
请问如何检测依赖项,检测依赖项后把库也打包进去,这个是如何做的? 我试了两种方式,一种是直接编译生成release文件夹拿去测试,另一种是 用 InstallSheld 打包工具 对 release文件夹进行组织打包得到安装包,这两种都有问题,还是报dll丢失。[/quote] 额,右键 属性 系统必备 但是这只能检测到系统的 不能检测到你使用到的DLL。。。 关于 你这种情况 我想提醒一下 !不知道会不会有这种情况!!!假如你的程序直接生成在exe文件夹里,而你的dll在bin文件夹,如果你打包的时候,直接打包exe文件夹或者把dll放在exe文件夹里一起打包估计是有问题的!因为你程序里面的调用路径不会去找你放在exe文件夹下面的dll,而是去找bin文件夹下的dll导致的错误呢。。。?
赵4老师 2014-08-13
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
赵4老师 2014-08-13
  • 打赏
  • 举报
回复
使用depends.exe在目标机上查看exe依赖的dll缺哪些(红色文字) 然后从开发机上拷贝这些缺的dll到目标机和exe相同的文件夹下。
robertbo 2014-08-13
  • 打赏
  • 举报
回复
使用DEPENDS.EXE检查程序的依赖项,看看程序都依赖了哪些dll 也可以到测试环境上用DEPENDS.EXE打开exe程序,看看哪些项目是打着黄色问号的,说明环境中缺少相应的dll。
borisyue2 2014-08-13
  • 打赏
  • 举报
回复
引用 1 楼 modyaj 的回复:
打包弄得少,但我记得打包之前不是要检测依赖项吗?检测到了后全部打包进去应该是没问题的
请问如何检测依赖项,检测依赖项后把库也打包进去,这个是如何做的? 我试了两种方式,一种是直接编译生成release文件夹拿去测试,另一种是 用 InstallSheld 打包工具 对 release文件夹进行组织打包得到安装包,这两种都有问题,还是报dll丢失。
阿呆_ 2014-08-13
  • 打赏
  • 举报
回复
引用 8 楼 Idle_ 的回复:
Visual C++ Redistributable for Visual Studio 2012 The Visual C++ Redistributable Packages install runtime components that are required to run C++ applications built with Visual Studio 2012.
阿呆_ 2014-08-13
  • 打赏
  • 举报
回复
Visual C++ Redistributable for Visual Studio 2012 The Visual C++ Redistributable Packages install runtime components that are required to run C++ applications built with Visual Studio 2012.
modyaj 2014-08-13
  • 打赏
  • 举报
回复
打包弄得少,但我记得打包之前不是要检测依赖项吗?检测到了后全部打包进去应该是没问题的
borisyue2 2014-08-13
  • 打赏
  • 举报
回复
回复各位,用depends.exe 查看了,是缺少msvcr110.dll, 从开发机上找到这个文件 复制到 跟exe同一个目录下,然后双击该exe, 没有反应,也不报任何错。 尝试regsvr32 msvcr110.dll 提示说 已加载msvcr110.dll, 但未找到dllregisterserver输入点,无法注册这个文件。 估计是这个dll没有被注册,导致无法运行。 何解?
MyEclipse2013 (32+64)下载地址(建议使用迅雷下载) http://downloads.myeclipseide.com/downloads/products/eworkbench/2013/installers/myeclipse-pro-2013-offline-installer-windows.exe 安装后先不要启动,先运行破解文件。 破解文件需要JAVA环境支持,请先安装JDK,配置环境变量(不会请百度之) 破解文件还是之前的,只是帮大家验证了一下重新打包上传分享 破解文件支持9.x~10.7.1的破解 在此鄙视一下网上收费下载的。 MyEclipse 2013 目录结构有点不一样 所以替换教程中的第五步 选择替换目录直接替换安装目录下的\plugins 目录即可 2013 版本 更改了很多东西,至少我自己的许多web项目迁移过去会报错, 因此不太推荐使用以前版本的人升级使用2013版本,当然如果是学习使用倒是没什么 测试两台 win8 x 64 破解MyEclipse2013都是通过的 如果觉得不适应2013 可以继续尝试10.7.1版本 MyEclipse10.7.1 (32+64)下载地址 http://downloads.myeclipseide.com/downloads/products/eworkbench/indigo/installers/myeclipse-10.7.1-offline-installer-windows.exe 特别要注意的是 MyEclipse2013 破解后 支持war包导出了 之前9.x~10.7.1 的所有版本破解之后导出war包都会报错! 免责声明: 本破解程序来自于互联网分享,不得用于商业用途,提供破解仅供学习交流使用,请支持购买正版! 因使用本软件造成的法律纠纷与本人无关!

722

社区成员

发帖
与我相关
我的任务
社区描述
Cocos2d-x相关内容讨论专区
社区管理员
  • Cocos2d-x
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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