C语言生成程序问题
问题:
我用VS2013写好C语言程序调试运行后就在debug文件夹下生成了EXE文件,可以在本机运行。
但是这个EXE文件在别的没装过VS2013的电脑上就不能直接运行,说丢失MSVCR120D.dll文件。
我重装系统后,没来得及安装VS2013,那些生成好的EXE时也都出现了上述问题。
由此,我认为是VS2013帮我安装好了一些东西。
但是,人家商业开发的软件在各样电脑上都可以运行,根本不需要客户安装VS和下载各种dll,
那么,有什么办法能让我的EXE可以不安装这个dll而直接运行呢?使它具有通用性呢?
答案:
这是个老问题了,无非就是运行库动态编译和静态编译的问题了。dll动态加载的话有个好处,它可以减少生成的exe文件的体积,但是缺点就是如果对应的系统环境变量或者exe所在的目录里面找不到其所需要的dll文件的话,程序就会拒绝执行。而静态编译就是把所有需要的库都静态编译到exe文件里面,这样就可以在所有的系统平台上都能运行,但它也有一个缺点,就是生成的exe文件因为已经带了部分库的代码,所以体积会相对动态编译出来的exe大(具体大多少要根据库的内容才能确定)。
解决方法:
对于直接使用cl.exe和link.exe编译连接的方式:
直接在cl.exe编译的时候或者在makefile里面把编译参数加上/MT即可。
对于在vs2013里面使用新建项目的方式:
右击相应的项目,选择“属性”,在项目属性页中的“配置属性”下面的“C/C++”下面的“代码生成”一项,由默认的“多线程调试DLL(/MDd)”,改成“多线程 (/MT)”,确定之后,重新生成项目即可。这样所得的exe文件就是静态编译了。
C语言生成程序问题的更多相关文章
- apk反编译生成程序的源代码和图片、XML配置、语言资源等文件
Android应用的UI越来越漂亮,遇到喜欢的我们可以通过反编译,得到应用的源代码借鉴下别人的思想. 具体步骤: 1.下载 apktool 下载地址:https://code.google.com/p ...
- Linux环境下使用gcc编译,gdb反汇编C语言程序
使用虚拟机 VMware Workstation 10 Linux环境:Ubuntu 14.04 LTS Server amd64 我把过程截图如下. 首先是hello world程序: 备注: ...
- PL/0语言编译器的设计与实现
一.设计任务 1.1程序实现要求 PL/0语言可以看成PASCAL语言的子集,它的编译程序是一个编译解释执行系统.PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关. PL/0的编译程序和 ...
- C语言编译过程详解
前言 C语言程序从源代码到二进制行程序都经历了那些过程?本文以Linux下C语言的编译过程为例,讲解C语言程序的编译过程. 编写hello world C程序: // hello.c #include ...
- 如何用 ANTLR 4 实现自己的脚本语言?
ANTLR 是一个 Java 实现的词法/语法分析生成程序,目前最新版本为 4.5.2,支持 Java,C#,JavaScript 等语言,这里我们用 ANTLR 4.5.2 来实现一个自己的脚本语言 ...
- [综述]领域特定语言(Domain-Specific Language)的概念和意义
领域特定语言(Domain Specific Language, DSL)是一种为解决特定领域问题而对某个特定领域操作和概念进行抽象的语言.领域特定语言只是针对某个特定的领域,这点与通用编程语言(Ge ...
- C语言入门(1)——C语言概述
1.程序与编程语言 我们使用计算机离不开程序,程序告诉计算机应该如何运行.程序(Program)是一个精确说明如何进行计算的指令序列.这里的计算可以是数学运算,比如通过一些数学公式求解,也可以是符号运 ...
- C语言实现将日期、时间保存到文本文件中
今天突然兴起,看来一下C语言的文件操作,以前在学习的时候,总是一带而过,觉得没有什么用处:但是现在看来,还真的没有什么用处,最后,我现在还有用到,当然这只是我的个人认为,并不能说明什么,在此我将自己写 ...
- 网页控制脚本修改系统信息 C语言调用uci
0 交叉编译生成程序 http://tuntuntun.net/%E5%9C%A8OpenWrt%E4%B8%8A%E8%BF%90%E8%A1%8C%E7%AC%AC%E4%B8%80%E4%B8% ...
随机推荐
- 小组E-R图的改进 2.0版本
上图是我对我们小组的数据库E-R图的改进 我在出勤上加了一个学生留言,因为我们组在需求分析中说明了有个教师与学生通过此软件交流的功能,教师可以通过这个功能给学生留言,学生也可以通过此功能请假或者说明旷 ...
- HDFS存档
Hadoop存档 每个文件均按块方式存储,每个块的元数据存储在namenode的内存中,因此Hadoop存储小文件会非常低效.因为大量的小文件会耗尽namenode中的大部分内存.存储小文件所需的磁盘 ...
- getchar与scanf区别
scanf可以一次按照设定的输入格式输入多个变量数据.如int d,float f,char str[20],scanf("%d%f%s",d,f,str); getchar()只 ...
- Python中MySQL插入数据
sql = 'INSERT INTO course(class_name, credit, properties, teacher_name, college_given, classroom) ' ...
- demo(幸福大转盘)总结
百度推广首页demo 在<head>与</head>之间加入代码 <link rel="shortcut icon" href="favic ...
- android里getView,inflate,listview问题
今天在写一个listview的时候,遇到一个问题,如下 package com.brookji.funlearn; import java.util.ArrayList; import android ...
- poj2396有源汇上下界可行流
题意:给一些约束条件,要求算能否有可行流,ps:刚开始输入的是每一列和,那么就建一条上下界相同的边,这样满流的时候就一定能保证流量相同了,还有0是该列(行)对另一行每个点都要满足约束条件 解法:先按无 ...
- 太深了,梯度传不下去,于是有了highway。 干脆连highway的参数都不要,直接变残差,于是有了ResNet。 强行稳定参数的均值和方差,于是有了BatchNorm。RNN梯度不稳定,于是加几个通路和门控,于是有了LSTM。 LSTM简化一下,有了GRU。
请简述神经网络的发展史sigmoid会饱和,造成梯度消失.于是有了ReLU.ReLU负半轴是死区,造成梯度变0.于是有了LeakyReLU,PReLU.强调梯度和权值分布的稳定性,由此有了ELU,以及 ...
- linux 部署python2.7
tar xvf Python-.tar.bz2 mkdir /usr/local/python27 ls cd Python- ./configure --prefix=/usr/local/pyth ...
- JDK所有版本
http://www.oracle.com/technetwork/java/archive-139210.html