我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 语言生成 >

C语言生成程序问题

归档日期:07-24       文本归类:语言生成      文章编辑:爱尚语录

  我用VS2013写好C语言程序调试运行后就在debug文件夹下生成了EXE文件,可以在本机运行。但是这个EXE文件在别的没装过VS2013的电脑上就不能直接运行,说丢失MSVCR120D.dll文件。我重装系...

  我用VS2013写好C语言程序调试运行后就在debug文件夹下生成了EXE文件,可以在本机运行。

  但是这个EXE文件在别的没装过VS2013的电脑上就不能直接运行,说丢失MSVCR120D.dll文件。

  我重装系统后,没来得及安装VS2013,那些生成好的EXE时也都出现了上述问题。

  但是,人家商业开发的软件在各样电脑上都可以运行,根本不需要客户安装VS和下载各种dll,

  那么,有什么办法能让我的EXE可以不安装这个dll而直接运行呢?使它具有通用性呢?

  补充一下,为什么我重新安装的win8.1电脑也会缺少所谓的这些dll呢?展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部这是个老问题了,无非就是运行库动态编译和静态编译的问题了。dll动态加载的话有个好处,它可以减少生成的exe文件的体积,但是缺点就是如果对应的系统环境变量或者exe所在的目录里面找不到其所需要的dll文件的话,程序就会拒绝执行。而静态编译就是把所有需要的库都静态编译到exe文件里面,这样就可以在所有的系统平台上都能运行,但它也有一个缺点,就是生成的exe文件因为已经带了部分库的代码,所以体积会相对动态编译出来的exe大(具体大多少要根据库的内容才能确定)。

  直接在cl.exe编译的时候或者在makefile里面把编译参数加上/MT即可。

  右击相应的项目,选择“属性”,在项目属性页中的“配置属性”下面的“C/C++”下面的“代码生成”一项,由默认的“多线程调试DLL(/MDd)”,改成“多线程 (/MT)”,确定之后,重新生成项目即可。这样所得的exe文件就是静态编译了。

本文链接:http://beforelasik.com/yuyanshengcheng/607.html