VC2008编译出的程序不能在其他机器上直接运行吗?

lengx7 2009-03-22 08:05:21
使用VC2008创建一个“Win32-Win32项目”和一个“MFC-MFC应用程序”,什么都不写,直接Debug/Release编译,在本机(XP)装了VC2008的可以运行,但是复制到其他XP的机器上就无法运行
VC2008制作出的程序要在其他机器上运行,还必须要自带一堆DLL或者安装程序?
不能像Delphi7那样编译一个Exe文件就到WinXP机器上裸奔?
...全文
1835 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ml1306 2010-06-09
  • 打赏
  • 举报
回复
D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxver_.h(81) : fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds
同样的问题,这个如何解决
天王 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ligh0721 的回复:]
笨了。。
为了方便浏览答案请单击解决VS2008程序独立运行问题
对了,楼上说做成安装包,但是如果是些小程序,实在是无必要做成安装包的。
[/Quote]

这样改之后出现了这个错误
D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxver_.h(81) : fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds
gotoo1234 2009-03-22
  • 打赏
  • 举报
回复
楼上说的很对
funnymfc 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 funnymfc 的回复:]
MFC工程里头选择静态链接就可以了。
[/Quote]
Release加静态链接,体积不大而且可以单个文件运行。不需要.net支持。
funnymfc 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 funnymfc 的回复:]
MFC工程里头选择静态链接就可以了。
[/Quote]
Release加静态链接,体积不大而且可以单个文件运行。
funnymfc 2009-03-22
  • 打赏
  • 举报
回复
MFC工程里头选择静态链接就可以了。
ahao 2009-03-22
  • 打赏
  • 举报
回复
方法1:
静态链接mfc和c运行库

方法2:
vc安装目录下找到一个放着mfc等dll的x86发布目录,把需要的全copy过去就可以了

lengx7 2009-03-22
  • 打赏
  • 举报
回复
我刚刚又创建了一个新的“Visual C++ -> Win32 -> Win32项目 ”,还是什么都不修改,直接Release编译,编译出的Exe文件为56K大小,放到其他XP机器上还是运行不了,提示“程序配置不正确”。。。
wltg2001 2009-03-22
  • 打赏
  • 举报
回复
w32程序应该能直接运行,MFC程序不论是VS2008还是以前的VC6都是要MFC DLL支持才能运行的。
delphi_911 2009-03-22
  • 打赏
  • 举报
回复
两种情况:

1.VS2008可以写托管和非托管两种C++程序,托管的生成IL代码,运行需要.Net Framework支持,非托管不用.Net Framework运行环境;
2.即使是非托管的程序,如果选择了MFC库,而在目标机子上没有相应的MFC版本,也是不能运行的。

关于MFC的版本,请参考MSDN。
gyk120 2009-03-22
  • 打赏
  • 举报
回复
貌似需要.net支持库……
rdsnow 2009-03-22
  • 打赏
  • 举报
回复
如果你其他什么都没有写!

win32程序需要将运行时库设置成静态
具体操作:项目 -> 属性 -> C/C++ -> 代码生成 -> 运行时库 -> 多线程(/MT)

MFC 程序需要静态链接 MFC
具体操作:项目 -> 属性 -> 常规 -> MFC的使用 -> 在静态库中使用 MFC
kuibobo 2009-03-22
  • 打赏
  • 举报
回复
需要在对方机器上部署vc2008的运行时,也就是动态库

你可以通过vs2008 新建一个发布项目 把你的程序做成安装包,然后勾上vc运行时,然后在对方机器上安装就可以了。
ligh0721 2009-03-22
  • 打赏
  • 举报
回复
笨了。。
为了方便浏览答案请单击 解决VS2008程序独立运行问题
对了,楼上说做成安装包,但是如果是些小程序,实在是无必要做成安装包的。
ligh0721 2009-03-22
  • 打赏
  • 举报
回复
呵呵,刚开始用VS2008吧,很遗憾,楼上各位回答的没有正确的解决方案。
funnymfc,只说对了一点,但是楼主还问了Win32的“裸奔”问题,而Win32非控制台项目,跟MFC是基本粘不着边的,所以静态链接MFC,是不能解决Win程序的“裸奔”问题的。
到我的博客里来吧,这里有你需要的答案:
http://hi.baidu.com/ligh0721/blog/item/301fc760a08eb24ceaf8f866.html
如果还有问题,可以QQ联系。
hust_terry 2009-03-22
  • 打赏
  • 举报
回复
一般不建议静态链接,都是做安装包,把MFC8相关的DLL一起打包的,还要.NetFrameWork。还有一个.manifest文件貌似也要一起发布的。
olfile readme file. [1. 文件名解释] olfile: Offload File 这个工具原本是项目中为测试TOE引擎的效率而设计的, 可以作为socket编程的一个例子来学习。 [2. 文件介绍] 程序中使用socket实现了文件的传输。 在VC6.0中编译通过,目录中olfile.cpp/olfile.h是原文件,可以任意修改,不过请不要改动文件头的作者信息。 有两个目录:server、client,其实编译来的东西是一样的,当时是为了测试方便才分来的。 可以直接打开client目录中的工程来编译。 [3. 使用介绍] 程序分client端和server端,server 端监听,client端使用命令行方式发送或接收文件。 在VC6.0中编译生成olfile.exe,使用不同的选项启动client和server。 比如,我们有两台机器10.190.1.1(A), 10.190.1.2(B),加入都运行windows,想把A的c:foo.dat传到B,并放在B的c:foodst.dat, 则需要在B启动server: olfile -server A启动client进行传输: olfile -src c:foo.dat -dst c:foodst.dat -ip 10.190.1.2 -y -src 表示源文件的位置 -dst 表示目标文件的位置 -ip 表示远程主机的IP。 -y 表示如果远程主机上的目标文件位置原来有文件,则强制覆盖。 可以看,可以让A当作Server,B当作Client,使用不同的命令行实现上面的文件传递: A启动server: olfile -server B启动client 进行文件传输,这时B的c:foodst.dat是目标: olfile -dst c:foodst.dat -src c:foo.dat -ip 10.190.1.1 -y [4.兼容性] 附带的Makefile文件表明,代码可以在Linux下正常编译。所以,可以运行在Linux下,实现Linux与Windows文件的互传。 可能的命令行会变成: olfile -dst /home/foodst.dat -src c:foo.dat -ip 10.190.1.1 -y [5. 局限和可能存在的问题] 1.程序不会对你所使用的系统产生致命影响,因为它仅仅是一个socket 实例。 2.server 在进行一次文件传输之后就退,因为程序是单一线程的。 3.可以利用程序的打印输看一下大概的传输速度(因为这时我当时在项目中写这个工具的原因)。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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