如何使vc2008写的非MFC程序运行在无vc环境的机子上?

本文详细解释了如何解决使用VC2008编译的库文件在无VC环境的计算机上无法运行的问题。包括设置运行时库为多线程(/MT)、确保编译为Release版本、打包必要的库文件,并提供了一种可能的解决方案以避免配置错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


问:

       我用的是vc2008 express版。 自己写了一个服务功能的lib,在一个客户程序中要调用我自己写的这个lib。无论lib还是客户端程序都是非mfc的,只用到了最基本的win32程序框架和opengl库。

       在本机可以运行,使用MTD方式编译后,在没有vc环境的机子上却无法运行。提示说“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”。 在网上查是说vc2008本身的配置问题,需要包含一些特殊的库文件。但比较奇怪的一点是,我另外有一个vc2008写的程序,也用到了opengl库,但是是一个比较简单的程序(没有用到自己的lib库)。这个程序用MTD方式编译,在同一个朋友的机子上可以运行。

实在搞不明白这是怎么回事。会不会因为有自己写的lib库的缘故?请教如果要调用自己写的lib库的话,在没有vc环境的机子上怎么运行?听说要做一个安装程序,不知道这个复杂不,有没有指导手册?

答:

     设置:项目->属性->配置属性->C/C++->代码生成->运行时库->多线程(/MT)即可。
缺省是多线程 dll(/MD),需要MSVC运行库,vc2008的MSVC运行库安装很麻烦,不像以前的版本仅包含几个dll。

       如果你要编译一个发布的版本在别人的电脑上运行,千万不要使用Debug版本,对于没有装VC20008的电脑,就会提示配置不正确之类的。
编译成Release版本后,把使用到得库文件与你编译出来的.exe放到一个目录下,发布给别人就可以正常运行了。

       可能用到得库有MSVCRT90.DLL,MSVCP90.DLL等等,具体需要哪些DLL文件你可以在一个没有安装VC2008的电脑上运行一下,缺少哪个库文件会有提示的。

       如果你需要使用MTD方式,那么就除了带上你的程序,以及lib等以外,还要带上编译器对应的crt,MFC类库dll
msvcr90.dll msvcm90.dll, msvcp90.dll, mfc90.dll,

       我的问题也查清楚了。因为我的lib编译时没有选用MT编译方式。这样虽然在client端选用MT方式,在别人机子上运行时依然会提示“配置不正确”;解决方法是对lib也选用MT方式即可。这样就没有任何问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值