VS2005 编译的 ITK 程序在其它机器上运行问题
2009-09-20 13:33
459 查看
刚编译安装好 ITK,过几天就要讨论班,需要演示。可是问题出现了,自己已经编译好的ITK程序无法在老师的那台公用笔记本上运行,才想起这台机器上没有VS2005,但这台机器古老的很,病毒无数,有没有空间,实在烦的很。
用命令行方式运行,提示:
“系统无法执行指定的程序”
直接双击运行,提示:
“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”
以前常使用VC6,只不过会提示说找不到“***.dll”,把需要的dll拷贝到目标机器就可以正常运行了。而VS2005整个编译器框架重新设计了,不会提示缺少哪些dll,这真是比较闹人。
VS2005 编译好的程序在其它没装 VS2005 的机器上运行,如下办法:
1.将程序编译成 Release 版本
一般机器上都已经安装有 Microsoft Visual C++ 2005 Redistributable,或者 VS2008 的,
2008 向下兼容,这样的话可以正常运行。否则有两种办法:
1) 到微软官方下载 Microsoft Visual C++ 2005 SP1 Redistributable Package (x86),
安装后便可以正常运行,这样一劳永逸。
2)在自己的机器上拷贝目录中
../Microsoft Visual Studio 8.0/VC/redist/x86/Microsoft.VC80.CRT 中的: msvcm80d.dll msvcp80d.dll
msvcr80d.dll Microsoft.VC80.CRT.manifest
几个文件到可执行文件所在目录即可。
更简便的方法的把 Microsoft.VC80.CRT 整个目录拷贝到 可执行文件 所在目录即可。
如果你的程序用到的 MFC,则需要拷贝 Microsoft.VC80.MFC 目录,其它同样。
2.如果你的程序是 debug 版本,那么同上面 2)方法一样,不过要拷贝的文件在:
D:/Program Files/Microsoft Visual Studio 9.0/VC/redist/Debug_NonRedist/x86 中
3.另一个比较郁闷的问题
一般C++,MFC程序,可以编译为静态链接,这样不用拷贝 VC 运行库就可以在目标机器上运行,
如下设置,debug, release 同样:
右键点击工程:Property->C/C++->Code Generation->Runtime Library ->Multi-threaded Debug(MTd)、release:Multi-threaded(MT)
默认为动态链接:Multi-threaded Debug DLL(MDd)、release:Multi-threaded DLL(MD)
如果使用 MFC,则需要设置 MFC 的链接: Configuration Property->General->Project Defaults->Use of MFC中设置静态,或动态链接.
但是,对于使用 ITK 库编写的程序,就会有问题,如果选择了静态链接,则在编译过程中会出现库冲突 LINK2005 错误,主要原因我想是这样的: 在编译 ITK 的时候,生成的 ITK 库同样使用了 VC 库,而且为动态链接;而自己的 ITK 程序则使用静态链接,这就出现了冲突,所以只能使用动态链接。
本来想验证一下,但是 ITK 的工程实在太多了,一个一个修改实在麻烦的很,而且自己的程序中可能会用到许多 ITK 库,所以如果将 ITK 编译为静态链接,这样一个小程序体积也会非常的大。
4.但我碰到一个更闹人的问题,就是无论如何都无法在那台乱笔记本上正常执行, VC 运行库都已经拷贝完整,而且我已经在多台电脑上测试过,包括自己用虚拟机新建的机器,没有装VS2005,都没有任何问题。
但是,在这台笔记本上就出现了问题,不是不能运行,而是运行过程中出现了问题,因为如果不拷贝相应 DLL,就会出现像上面“系统无法执行指定的程序”一样的问题。拷贝了相应 DLL 后,因为我的程序需要几个参数,不带参数时,会提示缺少参数;加上相应的参数后,程序经过几十秒后,就弹出一个对话框,“XXXXX.exe 遇到问题需要问题关闭”,并提示调试,同时生成一个错误报告。这个错误非常像平时用的一些软件在运行过程中突然出现的崩溃。但是我编译的程序是 ITK 中提供的例子,是已经经过测试没有问题的,而且我自己也在其它多台电脑上进行了测试,都正常,唯独这台乱电脑。难道真的是程序的问题,可是程序并没有执行什么大的任务,只是非常简单的任务而已。也许是电脑自己的问题,毕竟这台电脑已经是古董了,而且问题多多。
错误报告看不懂,是个 XML 文件,没有什么描述性语句,等那天碰到高人再解决吧,估计重装一下电脑肯定没问题, 可我实在是想搞明白这个问题的原因,头疼!!!
用命令行方式运行,提示:
“系统无法执行指定的程序”
直接双击运行,提示:
“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”
以前常使用VC6,只不过会提示说找不到“***.dll”,把需要的dll拷贝到目标机器就可以正常运行了。而VS2005整个编译器框架重新设计了,不会提示缺少哪些dll,这真是比较闹人。
VS2005 编译好的程序在其它没装 VS2005 的机器上运行,如下办法:
1.将程序编译成 Release 版本
一般机器上都已经安装有 Microsoft Visual C++ 2005 Redistributable,或者 VS2008 的,
2008 向下兼容,这样的话可以正常运行。否则有两种办法:
1) 到微软官方下载 Microsoft Visual C++ 2005 SP1 Redistributable Package (x86),
安装后便可以正常运行,这样一劳永逸。
2)在自己的机器上拷贝目录中
../Microsoft Visual Studio 8.0/VC/redist/x86/Microsoft.VC80.CRT 中的: msvcm80d.dll msvcp80d.dll
msvcr80d.dll Microsoft.VC80.CRT.manifest
几个文件到可执行文件所在目录即可。
更简便的方法的把 Microsoft.VC80.CRT 整个目录拷贝到 可执行文件 所在目录即可。
如果你的程序用到的 MFC,则需要拷贝 Microsoft.VC80.MFC 目录,其它同样。
2.如果你的程序是 debug 版本,那么同上面 2)方法一样,不过要拷贝的文件在:
D:/Program Files/Microsoft Visual Studio 9.0/VC/redist/Debug_NonRedist/x86 中
3.另一个比较郁闷的问题
一般C++,MFC程序,可以编译为静态链接,这样不用拷贝 VC 运行库就可以在目标机器上运行,
如下设置,debug, release 同样:
右键点击工程:Property->C/C++->Code Generation->Runtime Library ->Multi-threaded Debug(MTd)、release:Multi-threaded(MT)
默认为动态链接:Multi-threaded Debug DLL(MDd)、release:Multi-threaded DLL(MD)
如果使用 MFC,则需要设置 MFC 的链接: Configuration Property->General->Project Defaults->Use of MFC中设置静态,或动态链接.
但是,对于使用 ITK 库编写的程序,就会有问题,如果选择了静态链接,则在编译过程中会出现库冲突 LINK2005 错误,主要原因我想是这样的: 在编译 ITK 的时候,生成的 ITK 库同样使用了 VC 库,而且为动态链接;而自己的 ITK 程序则使用静态链接,这就出现了冲突,所以只能使用动态链接。
本来想验证一下,但是 ITK 的工程实在太多了,一个一个修改实在麻烦的很,而且自己的程序中可能会用到许多 ITK 库,所以如果将 ITK 编译为静态链接,这样一个小程序体积也会非常的大。
4.但我碰到一个更闹人的问题,就是无论如何都无法在那台乱笔记本上正常执行, VC 运行库都已经拷贝完整,而且我已经在多台电脑上测试过,包括自己用虚拟机新建的机器,没有装VS2005,都没有任何问题。
但是,在这台笔记本上就出现了问题,不是不能运行,而是运行过程中出现了问题,因为如果不拷贝相应 DLL,就会出现像上面“系统无法执行指定的程序”一样的问题。拷贝了相应 DLL 后,因为我的程序需要几个参数,不带参数时,会提示缺少参数;加上相应的参数后,程序经过几十秒后,就弹出一个对话框,“XXXXX.exe 遇到问题需要问题关闭”,并提示调试,同时生成一个错误报告。这个错误非常像平时用的一些软件在运行过程中突然出现的崩溃。但是我编译的程序是 ITK 中提供的例子,是已经经过测试没有问题的,而且我自己也在其它多台电脑上进行了测试,都正常,唯独这台乱电脑。难道真的是程序的问题,可是程序并没有执行什么大的任务,只是非常简单的任务而已。也许是电脑自己的问题,毕竟这台电脑已经是古董了,而且问题多多。
错误报告看不懂,是个 XML 文件,没有什么描述性语句,等那天碰到高人再解决吧,估计重装一下电脑肯定没问题, 可我实在是想搞明白这个问题的原因,头疼!!!
相关文章推荐
- 在未安装VS2005的机器上运行VS2005编译的C++程序
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- 解决VS2005编译的MFC在没有安装VS2005的机器上不能运行的问题
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题(转)
- 解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- 在未安装VS2005的机器上运行VS2005编译的C++程序
- VS2005编译的程序在没有装VS2005的机器上无法运行的解决办法
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- 【转】解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- 关于VS2005编译的程序运行时提示“由于应用程序配置不正确,应用程序未能启动”的问题
- [转]VS2008编译出的程序在另一台机器上无法运行的问题
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- 【原】解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题