24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2685  |  回复: 15
本帖产生 1 个 程序强帖 ,点击这里进行查看

steincat

荣誉版主 (知名作家)


[交流] 【求助】c++如何发布独立的程序?

俺是用VC6.0的编译环境,程序编译成功后,如何发布独立运行的执行文件? 就是拷贝到没有安装vc6.0的机子上也能运行。 还要专门的软件吗? 哪里有下载? 请高手指点一二,谢谢了先!


白天不能上网,晚上下班回家发金币,请包涵!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

imyourkobe

铁杆木虫 (著名写手)


★ ★
steincat(金币+15):谢谢!~ 2010-11-23 17:47:03
余泽成(金币+2): 谢谢参与应助,欢迎常来程序语言版! 2011-02-20 18:36:48
设置RELEASE就可以了。没有必要用专门的软件。
设置如下:
1.
编译中》设置活动的配置


2.
选择Release
5楼2010-11-23 13:41:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)


★ ★ ★ ★ ★
steincat(金币+15):谢谢指教! 2010-12-17 22:21:18
steincat(金币+6):再次谢谢! 2010-12-17 22:21:36
余泽成(金币+5, 程序强帖+1): 谢谢参与应助! 2011-02-20 18:38:52
linyujack 说的不正确。
所谓Debug版本,是说在.exe程序里包含了源程序的调试信息,比如符号表等。这样当你在程序里设置断点的时候,调试器能够定位到相应的语句。
另外,Debug版本,因为调试的需要,不对编译好的程序进行深度优化,甚至不优化,因为优化可能大乱源文件语句与汇编代码的对应关系,无法进行调试。

而Release版本就是完成了以上debug版本没有完成的任务,剔除了符号表,进行速度或体积上的优化。

通常来说release版本会比debug版本小。

而linyujack所说的,不是debug和release的区别,而是static和dynamic的区别。
任何编译型语言都需要一些链接库,而库的提供形式有两种:1 静态库, 所有的代码都放进最终的程序里,最后的程序就是所谓的绿色软件。 2 动态链接库。库代码单独放到一个文件里, 只有在最终运行的时候才加载相应的代码。所以,使用动态链接库的时候,由于有一部分代码在主程序以外,导致主程序显得很小。

所以最终软件发布的时候需要:
1 编译程release版本,并选择相应的优化选项
2 确定使用动态链接库还是静态的库。
2.1 当你使用的库很普遍,几乎任何电脑上都有安装的时候, 可以使用动态链接库,以减少程序的体积。但这通常没有绝对的保证。
2.1.1 如果你的程序调用了大量的库函数(我说的是种类,而不是次数),那可以包含这个库的动态链接库(DLL文件),随最终软件一同发布。而这个过程已经有N多的软件帮你完成,比如Windows Installer等。
2.2 如果你的程序很简单,而且想绿色运行,那就选择静态库,这样最终的程序体积会有所增大,但不需要任何安装就可以直接运行(需要通过DBMS访问数据库的除外)
2.2.1 如果你想发布绿色软件,又觉得软件体积太大,那么,请试试UPX这个软件,它是一个压缩软件,但压缩后的程序和原来没有任何区别(偶尔也会有点小麻烦,不过我还没有遇到过)

OK,我想我已经解释清楚了。至于如何选择编译方式,这个自己研究一下吧。
9楼2010-12-17 09:14:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

soar0603

银虫 (小有名气)


steincat(金币+1):请详细点说明,偶较愚笨,谢谢! 2010-11-22 21:31:14
InstallShield打包
2楼2010-11-22 21:01:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

soar0603

银虫 (小有名气)



steincat(金币+1):谢谢! 2010-11-23 19:44:30
余泽成(金币+1): 谢谢参与应助,欢迎常来程序语言版! 2011-02-20 18:36:25
内容已删除
3楼2010-11-22 22:36:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lcasperr

金虫 (初入文坛)


steincat(金币+1):谢谢! 2010-11-23 19:44:36
Windows Installer
4楼2010-11-22 22:53:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

linyujack

铜虫 (小有名气)


★ ★
steincat(金币+10):thx,怎么做成一个独立的执行文件? 就象绿色软件那样的. 2010-12-17 08:24:01
余泽成(金币+2): 谢谢参与应助,欢迎常来程序语言版! 2011-02-20 18:37:17
vc有debug跟release模式之分。
调试程序一般用debug模式,这样生成的exe文件会比较小。
调试通过,最终发布的时候,用release模式,会把相应的.dll等文件打包进去,这样文件可能会比较的大。
如果要做成安装文件,vc中也有相应的工具。
7楼2010-12-16 17:53:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

steincat

荣誉版主 (知名作家)


引用回帖:
Originally posted by linyujack at 2010-12-16 17:53:26:
vc有debug跟release模式之分。
调试程序一般用debug模式,这样生成的exe文件会比较小。
调试通过,最终发布的时候,用release模式,会把相应的.dll等文件打包进去,这样文件可能会比较的大。
如果要做成安装文 ...

thx,怎么做成一个独立的执行文件? 就象绿色软件那样的.
8楼2010-12-17 08:24:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jason.masc

铜虫 (初入文坛)


★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3): 谢谢参与应助,欢迎常来程序语言版! 2011-02-20 18:39:19
holmescn说的很正确,只是补充一点,其实在大多数实际的软件项目中,Release版本也还是需要调试才能正常运行的。推荐如下的调试技巧:
生成map文件。即使编译Release版本时打开了优化选项,也就是在VC++中打开Generate mapfile选项,它仅仅是把编译连接时的所有函数入口地址记录在一个后缀为map文件中,程序如果出了问题,都可以得到崩溃时的EIP地址,通过这个地址,就可以查到程序挂掉时的函数是哪个。
引用回帖:
Originally posted by holmescn at 2010-12-17 09:14:50:
linyujack 说的不正确。
所谓Debug版本,是说在.exe程序里包含了源程序的调试信息,比如符号表等。这样当你在程序里设置断点的时候,调试器能够定位到相应的语句。
另外,Debug版本,因为调试的需要,不对编译好 ...

10楼2011-02-16 22:58:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Ldelong_hit

银虫 (正式写手)



jjdg(金币+1): 感谢参与 2011-07-06 00:43:52
太好了
11楼2011-07-05 18:56:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文俊点点

木虫 (著名写手)


★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+1): 感谢参与 2011-07-06 00:43:59
都是实战人员啊········
惭愧中········
Java是不是也这样啊?
12楼2011-07-05 23:28:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chenghj

新虫 (初入文坛)


★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 欢迎常来程序语言版讨论 2011-07-15 13:37:43
我觉得你只会C++的DOS窗口啊,你应该编辑EXE程序的,就是新建MFC函数之类的!
13楼2011-07-08 12:32:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)


★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 欢迎常来程序语言版讨论 2011-07-15 13:37:35
引用回帖:
Originally posted by chenghj at 2011-07-08 12:32:10:
我觉得你只会C++的DOS窗口啊,你应该编辑EXE程序的,就是新建MFC函数之类的!

=,=界面神马都是浮云
14楼2011-07-15 11:30:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
引用回帖:
Originally posted by jason.masc at 2011-02-16 22:58:18:
holmescn说的很正确,只是补充一点,其实在大多数实际的软件项目中,Release版本也还是需要调试才能正常运行的。推荐如下的调试技巧:
生成map文件。即使编译Release版本时打开了优化选项,也就是在VC++中打开Ge ...

很好
15楼2011-07-15 13:40:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

骏马飞驰

捐助贵宾 (小有名气)


★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+1): 感谢参与程序语言版讨论 2011-07-16 13:31:11
可以选择Realease版本,编译成功后,再将程序涉及的相关文件,如dll,lib库,资源文件,ini,xml配置文件等,用打包工具做成安装包。这样在别的机器上就可以运行啦。我们公司的安装程序都是自己写的,你可以用VS自带的安装工具,或者用免费的NSIS打包。
16楼2011-07-16 09:23:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
6543850746楼
2010-12-14 21:31   回复  
steincat(金币+1):thx 2010-12-17 08:24:38
相关版块跳转 我要订阅楼主 steincat 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见