设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行

2023-11-04

背景

初学编程的时候,那时使用的开发环境是VC6.0。使用VC6.0编译的控制台程序或者是DLL,直接编译出来就可以在其他平台上运行或是调用,不需要额外加载运行库DLL等等。使用VC6.0编译出来的MFC程序,编译的时候设置下在静态库中使用MFC,即将MFC所需的DLL组件静态编译到程序里,这样程序在任一平台上运行,也不需要额外附加MFC所需的DLL文件。

后来,由于跟随大流,VC6.0慢慢地就很少使用,转而使用VS2010、VS2012、VS2013、VS2015,甚至现在VS2017也有了。使用VS系统的开发环境,功能方面确实比较全面,提升开发效率。但是,伴随着VC6.0一些习以为常的习惯,例如编译的设置等,都悄无声息地都露着区别。所以,本文就是教你在使用VS系列开发环境的时候,怎么设置编译选项,使得生成出来的程序可以直接在其他电脑上运行,就像VC6.0一样,不需要额外DLL文件。

步骤

1. 针对VS上编译控制台程序和DLL程序的编译设置

之所以把控制台和DLL程序的编译设置放在一起,是因为它们的设置都已一样的。现在,我们以VS2013开发环境为例,想大家描述一下操作步骤。

在打开项目工程之后,右击项目工程,选中并点击“属性”,打开属性页。

1> 设置兼容XP

在“平台工具集”里选择“Visual Studio 2013 - Windows XP (v120xp)”,即带有“Windows XP (v120xp)”字样的选项,这表示程序兼容XP系统,可以正常在XP系统下运行。

2> 静态编译运行库

接着上面操作,点击左侧“C/C++”前面的三角形标号,展开选项;然后,点击“代码生成”选项,便可以在右侧的页面看到“运行库”的默认值是“MDd”。如果此时,你的项目是Debug模式的,则选择“MTd”,若是Release模式的,则选择“MT”。其中MT是“Multithread, Static Version”的缩写,即多线程静态版本;d是“Debug”的缩写,即Debug模式。

根据上面两步操作:设置XP兼容和静态编译运行库,这样编译出来的控制台程序和DLL程序就能直接在Windows系统上直接加载运行了。

2. 针对VS上编译MFC程序的编译设置

对于MFC程序,除了上面两步操作之外。(注意:除了上面两步操作之外,也就是说,MFC程序的编译也要进行上面两项的操作。)还需要额外做一步操作,就是在“MFC的使用”选项中设置“在静态库中使用MFC”。这样,VS开发环境就会把MFC所需的DLL文件都静态编译到程序里,这样,生成的文件也自然会变大。但是,这样程序就可以直接在其他Windows计算机上运行了,而不需要额外加在其他文件。

总结

上述,罗列了控制体程序、DLL程序以及MFC程序在VS系列开发环境的编译设置,大家按照以上操作,就可以编译出更加便于使用的程序出来。

参考

参考自《Windows黑客编程技术详解》一书

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行 的相关文章

  • 【C/C++】报错问题积累

    1 出现Deprecated declaration XXX give arg types c文件中 有没有参数的函数时 声明需要加void即 main c void fun main h void fun void
  • 范围for语句

    C 新标准提供的范围for语句 这种语句遍历给定序列中个元素并对序列中每一个值执行某种操作 其语法形式是 for declaration expression statement 其中 expression 部分是一个对象 用于表示一个序列
  • C++ 中的虚函数及虚函数表

    C 中的虚函数及虚函数表 一 虚函数及虚函数表的定义 二 虚函数表指针和虚函数表的创建时机 三 虚函数实现多态的原理 一 虚函数及虚函数表的定义 虚函数 虚函数就是在基类中定义一个未实现的函数名 使用虚函数的核心目的就是通过基类访问派生类定
  • 五. python面向对象(多态 和metaclass=abc.ABCMeta)

    一 多态 多肽 一种事物的多种形态 叫多肽 例如 动物 animal 猫 狗 animal py 文件 动物类 都有名字这个属性 和吃这个方法 class Animal object def init self name self name
  • c/c++入门教程 - 1.基础c/c++ - 1.0 Visual Studio 2019安装环境搭建

    推荐视频课程 https www bilibili com video BV1et411b73Z p 2 已投币三连 b站果然是个学习的网站 本来是想在linux环境下运行QT 于是先学了几个月linux嵌入式驱动开发 后来发现太底层了 与
  • typedef struct 用法详解

    typedef为C语言的关键字 作用是为一种数据类型定义一个新名字 当typedef与结构结合使用时 会有一些比较复杂的情况 而且在C语言和C 里面有略有差别 本文将详细讲解typedef struct的用法 第一篇 typedef str
  • C/C++中浮点数格式学习——以IEEE75432位单精度为例

    这是浮点数的通常表示形式 在IEEE754中 单精度浮点数有如下形式 32位单精度 单精度二进制小数 使用32个比特存储 1 8 23位长 S Exp Fraction 31 30至23偏正值 实际的指数大小 127 22至0位编号 从右边
  • Lua和C++交互总结(很详细)

    出处 http blog csdn net shun fzll article details 39120965 一 lua堆栈 要理解lua和c 交互 首先要理解lua堆栈 简单来说 Lua和C c 语言通信的主要方法是一个无处不在的虚拟
  • BP学习算法-构建三层神经网络

    引 人工神经网络 Artificial Neural Networks 简写为ANNs 也简称为神经网络 NNs 或称作连接模型 Connection Model 是一种模仿动物神经网络行为特征 进行分布式并行信息处理的算法数学模型 这种网
  • C++中的RTTI

    文章目录 dynamic cast运算符 指针类型的dynamic cast 引用类型的dynamic cast typeid运算符 使用RTTI type info类 参考资料 RTTI Runtime Type Information
  • ATL字符串转换宏

    有比MultiByteToWideChar和WideCharToMultiByte更简单的字符串转换宏 你相信吗 头文件 d program files microsoft visual studio 8 vc atlmfc include
  • c语言判断一个数是否为偶数

    include
  • 手把手教你如何写一个三子棋/N子棋的小游戏

    这里写目录标题 第一步 游戏进入界面 第二步 初始化棋盘 第三步 打印棋盘 第四步 玩家和电脑下棋 第五步 判断输赢 三子棋或者N子棋怎么写 让我们先来玩一把 再来看看怎么写 程序运行界面 1为玩游戏 2为清屏 0为退出游戏 我们选1 然后
  • 在聚会中常玩数七的游戏,七的倍数和带有七的数字都不能说,比如14,27,28。请找出1~100的不能说的数字。...

    利用ES5的filter高阶函数来实现 var arr 1 2 3 4 5 6 7 17 27 21 22 28 100 r arr filter function x return x 10 7 x 7 0 alert r 7 14 17
  • 一个简单的参数帮助框架,c实现

    文章目录 具体实现如下 include
  • enable_shared_from_this使用介绍

    文章目录 enable shared from this定义 使用场合 源码实现 注意 enable shared from this定义 定义于头文件 template lt class T gt class enable shared
  • 【C++】运算符重载

    加号运算符重载 include
  • C 语言教程:数据类型和格式说明符

    C 语言中的数据类型 C 中的变量必须是指定的 数据类型 并且您必须在 printf 函数中使用 格式说明符 来显示它 创建变量 int myNum 5 整数 没有小数点 float myFloatNum 5 99 浮点数 char myL
  • C/C++编程中的算法实现技巧与案例分析

    C C 编程语言因其高效 灵活和底层的特性 被广大开发者用于实现各种复杂算法 本文将通过10个具体的算法案例 详细探讨C C 在算法实现中的技巧和应用 一 冒泡排序 Bubble Sort 冒泡排序 Bubble Sort 是一种简单的排序
  • C++中的引用

    一 引用的概念 引用不是新定义一个变量 而是给已有变量取一个别名 编译器不会为引用变量开辟内存空间 而和它引用的变量共用一块内存空间 注意 由于C 兼容C 所以 既可以是引用符号 也可以是取地址 int a 0 int b a cout l

随机推荐

  • PHP Drupal个人博客

    PHP Drupal个人博客 官网 Prerequisite PHP Composer 快速安装 composer create project drupal recommended project drupal cd drupal php
  • lucene 总体架构

    本文转载至 http www cnblogs com forfuture1978 archive 2009 12 14 1623596 html Lucene概述 一个高效的 可扩展的 全文检索库 全部用Java实现 无须配置 仅支持纯文本
  • 混合整数规划(Mixed Integer Programming)

    混合整数规划 Mixed Integer Programming 混合整数规划问题是运筹优化中经常遇到的一类问题 在这类问题中自变量的类型可能是整数也可能不是整数 相比于连续优化 混合整数规划很多时候会更难求解 在学术界混合整数规划一直是一
  • 最小生成树(普里姆算法和克鲁斯卡尔算法)

    1 基本介绍 2 普里姆算法 普里姆算法 package algorithm import java util Arrays public class PrimDemo public static final int MAX VALUE 1
  • 从p文件到m文件,快速将Matlab p代码转换成m文件

    你是否遇到过这样的问题 发现自己写的Matlab代码根本无法加密 或者别人发给你的MATLAB代码无法打开或运行 如果是这样 那么你需要一款强有力的Matlab解密工具 左左Matlab解密助手 左左解密助手是一款功能强大的Matlab解密
  • 状态机模型

    参考 什么是状态机 用C语言实现进程5状态模型 参考 设计模式 一目了然的状态机图 案例 状态模式 C语言实现 MP3播放 暂停案例 STM32按键消抖 入门状态机思维 常用的while循环内switch case形式 实现状态机的状态跳转
  • java自动化测试语言基础之正则表达式

    java自动化测试语言基础之正则表达式 文章目录 java自动化测试语言基础之正则表达式 Java 正则表达式 Java 正则表达式 正则表达式定义了字符串的模式 正则表达式可以用来搜索 编辑或处理文本 正则表达式并不仅限于某一种语言 但是
  • 树莓派 OCR识别 2-2:chineseocr_lite 部署

    chineseocr lite github项目地址 https github com ouyanghuiyu chineseocr lite 超轻量级中文ocr 支持竖排文字识别 支持ncnn推理 dbnet 1 8M crnn 2 5M
  • JAVA 获取某段时间内的所有日期集合

    集合里包含月份 开始 结束 2019 01 01 00 00 00 2019 01 31 23 59 00 2019 02 01 00 00 00 2019 02 28 23 59 00 2019 03 01 00 00 00 2019 0
  • 社区生鲜团购小程序

    摘 要 随着生活质量的提高 人们对生鲜购物体验的要求逐步升级 传统生鲜物流成本相对较高 生鲜产品品质控制困难 在新零售背景下的社区生鲜团购模式拥有经营成本低 用户黏性高等优点 互联网与实体店相结合带来了更多的便利和机会 自微信推出以来 就迅
  • 39. 组合总和 40. 组合总和 II

    39 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target 找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 并以列表形式返回 你可以按 任意顺序 返回这些组合
  • Java文档注释用法+JavaDoc的使用详解

    Java文档注释 JavaDoc的使用详解 简介 文档注释负责描述类 接口 方法 构造器 成员属性 可以被JDK提供的工具 javadoc 所解析 自动生成一套以网页文件形式体现该程序说明文档的注释 注意 文档注释必须写在类 接口 方法 构
  • spring boot中使用@requestbody注解接收不到值是什么鬼

    首先 先科普一下这个注解的用法吧 requestbody一般是用于put或post请求时 在controller处接收前端发送的值 通过适当的HttpMessageConverter转换为JAVA类 而前端在发送值的时候必须指定数据是jso
  • “泰迪杯”超市Spark数据处理和数据分析项目实战Dataframe

    数据和代码 2019 年 泰迪杯 数据分析职业技能大赛 超市销售数据分析 一 背景 近年来 随着新零售业的快速发展 消费者购买商品时有了更多的对比和 选择 导致超市行业的竞争日益激烈 利润空间不断压缩 超市的经营管理产 生了大量数据 对这些
  • WINDOWS下使用redi并安装成系统服务开机启动

    WINDOWS下使用redis 下载redis源码 解压使用 将redis安装成window系统服务 不显示黑窗口 下载redis源码 linux下的redis可以再redis官网上找到Statble版本并下载 但是window版本在官网上
  • 实践练习三(可选):使用OBD 部署一个 三副本OceanBase 集群(离线安装)

    部署规划 这次作业是OceanBase 集群三节点部署方法 通过中控机直接远程登录到 OceanBase 节点上部署启动 observer 和 obproxy 进程 由于手上正好有7台物理机 所以在这个作业中会使用OBD直接部署为2 2 2
  • PAT甲级2023夏季考试题解(A-1 Trap,A-2 Queue Using Two Stacks,A-3 Rank of Binary Tree,A-4 Big Number)

    很幸运得到了一个满分 最后一题真的是连蒙带猜的AC的 当AC的那瞬间 可以用喜极而泣来形容了 去年十二月也参加了一次甲级 但是才考到89分 不是很满意 因此这次又去参加了一次 但总算得到了一点收获 也算对自己的一点安慰吧 A 1 Trap
  • 基于MATLAB的字母识别系统

    一 算法步骤 1 测试图像预处理及连通区域提取 2 样本库的建立采集feature 3 选择算法输入测试图像进行测试 二 识别过程 源码 1 连通区域提取分割 在原图的基础上进行了膨胀 腐蚀 膨胀的操作使截取的图像更加接近字母 提取数字的边
  • 微信小程序组件、web-view、h5之间交互

    目录结构 component index page index js index wcss index wxml index json pages index index wcss index wxml index js index jso
  • 设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行

    背景 初学编程的时候 那时使用的开发环境是VC6 0 使用VC6 0编译的控制台程序或者是DLL 直接编译出来就可以在其他平台上运行或是调用 不需要额外加载运行库DLL等等 使用VC6 0编译出来的MFC程序 编译的时候设置下在静态库中使用