求问用C++编译的控制台程序怎样能在其他没有装Microsoft Visual Studio 2005的机器上运行?? 10
方法挺多的,简单说几种吧。
1,楼上说的静态编译,VC运行库静态编译,但会增大应用程序的大小,你的小程序可以这样,但一般大型程序不推荐。
2,使用depends.exe查看你编译生成的exe依靠哪些文件运行,把这些文件拷贝到目标机器上,放到系统文件夹下或者和你的程序放一起。
3,让对方安装VC2005重新分发包,一般名叫vcredist_x86.exe,但要注意这个分发包要和你开发程序的一样,因为VC2005 express版,VC2005,和VC2005+SP1有不同的重新分发包。
4,最提倡的就是使用VS2005制作安装包工程,里面配置功能丰富,可以配置各个安装界面,注册表信息,需要的各种文件,所需要的运行库是自动帮你加的,如果你的程序包含图标,配置文件,或者其它的一些文件,都可以在里面进行配置。
正式发布通常都采用第四种方法,我这里没有05,有10,给你说下大概步骤,05基本相同,只是功能没有10多。
在你解决方案浏览器上右键点你要打包的工程,然后添加工程,如图:
然后在模板里选择其它功能类型-->安装和部署,2010的功能要比2005强大,还集成了InstallShield的安装程序。这里选择微软自己的安装部署工程,右边选择Setup Project,如图:
之后,给安装工程命名,比如叫Setup,然后在这个工程上点右键,选择工程输出,如图:
然后就会看到你之前的那个工程已经在备选下拉框里了,如果有多个工程,选择好工程,下面选择主输出Primary Output,configuration里可以选是debug还是release,Active表示当前工程配置,如图
之后Ok,然后编译setup工程,就会生成安装包了,还可以对setup工程进行各种配置,比如安装时候的界面,带其它的文件等等。
你是不是在选择项目类型时不是选择的win32 控制台,而是CLR(公共语言运行时)类型的控制台程序,c++在.net 中有两种程序类型,一是托管C++,另一类是非托管的C++,托管c++代码运行在装有CLR环境的计算机(.net Framework的一部分),非托管的c++代码运行不需要.net 环境。如win32,MFC类型的c++程序。虽然托管和非托管的c++程序都有Exe后缀名,实际上托管的代码实际上是运行在虚拟机(即.netFramwork 的CLR)中。而C#是完全的托管语言(即c#程序要运行在目标机上必须装有.net Framework)。