程序终于实现跨机器运行——记VC++2005程序开发的一个常见问题
2007-05-11 21:06
573 查看
最近经常被同学笑话说天天都在说我的程序可以跨平台,结果连跨机器都不行~~~这还得“归功”与VS2005的运行库和manifest作怪。
在VS2005里面编译的程序默认的配置是“多线程DLL”,其实也就是动态链接运行库的DLL,文件小,但需要客户机安装运行库。还有一个选项是“多线程”,这个选项就是静态链接运行库,文件大,优点是不需客户机安装运行库。
现在编译我的程序为release以便在客户机上使用,按照默认的的“多线程DLL”链接编译。直接把EXE文件和相关的DLL文件复制到客户机,无法使用,提示“应用程序配置不正确…………”。这令人很尴尬,在网上搜索找到三种解决方案:
1、所有的库和应用程序都使用静态链接。但这样导致的问题就是N多的链接错误,对于我来说OpenSceneGraph的库的osgCore就有1000多个链接错误~~。即便是链接成功,文件也会异常的大。除非是小工程,而且不需要外来库,可以选择这个方法,直接拷贝EXE就可以用。
2、制作安装包。此法看了后感觉很复杂~~略去。
3、在客户机上安装vc运行库分法包,也就是位于C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86里面的文件。
方法三对于普通的大工程比较实用,包括AUTOCAD2006都是这样的方式。
最开始我用的是微软官方下载的vcredist_x86,但是很郁闷,还是提示“应用程序配置不正确……”,后来用安装的SDK目录里面的(就是上面那个路径)vcredist_x86.exe就对了。想必可能是我的VS2005是SP1,这个发行包已经更新。所以建议直接从SDK目录里面提取。
最后就在客户机上安装了vcredist_x86,拷贝必要的OpenSceneGraph的DLL,执行我的程序就对了!
其实中间还很费周折,最开始为了编译成一个静态链接的库,我反复测试编译OpenSceneGraph的Release版本,结果每次都是各种各样的链接错误,要不就是找不到函数,要不就是函数重定义。还好中间老蒋来找我出去刚了一圈,回来头脑清醒了一些,运气也来了,问题也就找到了。
下一个任务就是测试一下能不能跨平台了,呵呵,Linux,等着吧!
在VS2005里面编译的程序默认的配置是“多线程DLL”,其实也就是动态链接运行库的DLL,文件小,但需要客户机安装运行库。还有一个选项是“多线程”,这个选项就是静态链接运行库,文件大,优点是不需客户机安装运行库。
现在编译我的程序为release以便在客户机上使用,按照默认的的“多线程DLL”链接编译。直接把EXE文件和相关的DLL文件复制到客户机,无法使用,提示“应用程序配置不正确…………”。这令人很尴尬,在网上搜索找到三种解决方案:
1、所有的库和应用程序都使用静态链接。但这样导致的问题就是N多的链接错误,对于我来说OpenSceneGraph的库的osgCore就有1000多个链接错误~~。即便是链接成功,文件也会异常的大。除非是小工程,而且不需要外来库,可以选择这个方法,直接拷贝EXE就可以用。
2、制作安装包。此法看了后感觉很复杂~~略去。
3、在客户机上安装vc运行库分法包,也就是位于C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86里面的文件。
方法三对于普通的大工程比较实用,包括AUTOCAD2006都是这样的方式。
最开始我用的是微软官方下载的vcredist_x86,但是很郁闷,还是提示“应用程序配置不正确……”,后来用安装的SDK目录里面的(就是上面那个路径)vcredist_x86.exe就对了。想必可能是我的VS2005是SP1,这个发行包已经更新。所以建议直接从SDK目录里面提取。
最后就在客户机上安装了vcredist_x86,拷贝必要的OpenSceneGraph的DLL,执行我的程序就对了!
其实中间还很费周折,最开始为了编译成一个静态链接的库,我反复测试编译OpenSceneGraph的Release版本,结果每次都是各种各样的链接错误,要不就是找不到函数,要不就是函数重定义。还好中间老蒋来找我出去刚了一圈,回来头脑清醒了一些,运气也来了,问题也就找到了。
下一个任务就是测试一下能不能跨平台了,呵呵,Linux,等着吧!
相关文章推荐
- 问题阐述: 本人使用mini6410开发了一个sqlite数据库的程序,在mini6410的linux系统下已经能够成功运行了。因为Android使用的也是linux内核,所以我想当然的认为按照同样
- 解决VC2005/2008开发的程序在其他机器上无法运行的问题
- perl 问题解决:一个有多个perl安装程序的机器环境上运行程序的问题
- VS2008环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题(IIS)
- Android开发学习解决程序运行就出错的一个问题
- VS2008环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题(IIS)
- VS2008环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题(IIS)
- c# Winform 如何实现程序只能同时运行一个实例
- HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了
- vs2008程序不能在其他机器运行的问题
- 实现同时只允许运行一个程序实例
- 微信小程序开发常见问题分析
- Ajax 程序开发中常见问题
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何让不同的PLC程序分线程运行 TC2
- 【Android开发经验】关于主题引用混乱导致程序运行崩溃的问题
- 一个关于VS2008在其他未安装VS2008的电脑上无法运行编译的程序的问题
- 【Linux开发技术之常见问题】一个建立线程时常见的问题:invalid conversion from `void*' to `void*(*)(void*)
- VC 实现程序只运行一个实例,并激活已运行的程序
- GDB多线程调试基本命令和实现简介以及一个常见问题的解决
- 关于OpenCV开发的程序不能在其他电脑上运行的问题