关于发布标准C++程序问题

李亚超 2012-07-09 11:36:20
用vs2008编译标准c++写成的项目,怎样才能发布程序,不依靠特定的库,从而在没有装vs开发环境的机器上也可以运行。
主要代码如下:

#include <iostream>
#include <fstream>
#include "seg.h"
using namespace std;
int main(int argc, char **argv)
{
if(argc < 3)
{
std::cout<<"using:segt.exe testFile resultFile"<<std::endl;
return 0;
}
std::cout<<"Copyright (C) 2011 - 2012."<<std::endl;
std::cout<<"Version: 0.6, Last update: 2012-07-01."<<std::endl;

std::string path = "input.txt";
std::string out = "output.txt";
path = argv[1];
out = argv[2];
GeWoSeg *seg = new GeWoSeg();
if(!seg->Tibetan(path,out))
std::cout<<"Seg Error!"<<std::endl;
delete seg;
return 0;
}


...全文
129 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
图灵狗 2012-07-09
  • 打赏
  • 举报
回复
1 新建安装部署项目
打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定。2 安装向导
关闭后打开安装向导,点击下一步,或者直接点击完成。
3 开始制作
安装向导完成后即可进入项目文件夹:
双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来。然后右击你的文件,创建快捷方式,然后把快捷方式分别复制或剪切到左边的"用户的'程序'菜单"和"用户桌面"中。这样安装程序安装完成后会在 "开始->所有程序"和"桌面"上生成程序的快捷方式。也可以直接在"用户的'程序'菜单"和"用户桌面"相应目录下新建快捷方式,然后定位到你的文件。

然后右击左边的"应用程序文件夹"打开属性对话框:将属性中的"DefaultLocation"的路径中的"[Manufacturer]"去掉,不然的话做好的安装程序默认安装目录会是"C:\Program Files\你的用户名\安装解决方案名称";

然后打开解决方案管理器,右击你的解决方案名称,选择属性:打开的属性页中,选择"系统必备", 在打开的系统必备页中,在"指定系统必备安装组件的位置"中选中如下选择项:从与我的应用程序相同的位置下载系统必备组件。选上以后,在生成的安装文件包中包含.NetFramework组件 。好了,这样就完成99%了,然后点击"生成->生成解决方案",哈,生成成功!

4 制作完成
现在打开解决方案文件夹下的Debug文件夹,就可以看到生成的安装文件了。

5 关于"卸载"功能的添加
上面只介绍了简单的生成安装的方法,但是在VS2005下并没有直接生成卸载程序的功能,所以我们只好用msi来实现了,操作方法如下:

在添加你的应用程序项目的时候,多添加一个msiexec.exe进去,这个文件在c:\windows\system32文件夹下,添加进去以后,为了让他更像个卸载程序,把他的名字改成"Uninstall.exe",当然这个关系不大,改不改都行。

然后创建一个快捷方式,放到"开始-程序"中,接下来我们要做的就是查找这个部署项目的ProductCode了,鼠标左键单击项目名称,记住是左键单击,然后点击属性标签,注意:不是右击的属性,这个区别很大,这时你就可以看到ProductCode了。

然后打开你创建的那个快捷方式的属性对话框,在Aguements属性中输入"/x {ProductCode}",好了,然后点击"生成解决方案"即可生成带有卸载功能的安装程序了。
赵4老师 2012-07-09
  • 打赏
  • 举报
回复
用depends.exe查看exe依赖的dll
W170532934 2012-07-09
  • 打赏
  • 举报
回复
你这个控制台程序发布为release,采用静态链接库就应该是可以的了。不知道那个VS2008运行库到底对你这个有没有影响。如果有的话,就使用VS2003或者2005试试
李亚超 2012-07-09
  • 打赏
  • 举报
回复
试过这种方法,但是在win7上,不能运行,是不是win7是64位的系统?
[Quote=引用 5 楼 的回复:]

控制台程序,
属性 -> C/C++ -> Code Generation -> Runtime Library 改成MT

这样就不需要vc90cp.dll等等了
[/Quote]
李亚超 2012-07-09
  • 打赏
  • 举报
回复
现在的主要问题是,编译后的程序,在一些机器上不能运行。需要函数库,支持。比如,win7.
xunxun 2012-07-09
  • 打赏
  • 举报
回复
/MD -> /MT
hz张三 2012-07-09
  • 打赏
  • 举报
回复
控制台程序,
属性 -> C/C++ -> Code Generation -> Runtime Library 改成MT

这样就不需要vc90cp.dll等等了
wsxxiaohao 2012-07-09
  • 打赏
  • 举报
回复
楼上指针安装程序的

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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