最近新写的程序要做beta测试,在做绿色版(免安装版)时遇到了问题,vs2015做的项目本以为像之前的vs版本一样把msvcrXXX.dll还有另外几个运行时库都放到exe旁边即可,然并卵。。。,在win7的测试机上还会提示找不到这个dll:api-ms-win-crt-runtime-l1-1-0.dll,如下图

继续找到这个dll拷到exe旁,坑爹的一幕放生了,竟然提示那个dll有问题——无法定位程序输入点ucrtbase.terminate。。。

难道是版本不对,我机器上是有几个不同大小的api-ms-win-crt-runtime-l1-1-0.dll,都试了下,还是不行,这就没处说理了。。。然后谷歌了下,都是说要装vs2015 Redistributable或者KB2999226的更新(Win10通用CRT,不是win10的,是其他win7等系统的更新用来支持通用crt的程序),试着装了下Redistributable包竟然装到一半报未定义的错误(0x80240017)。。。O(≧口≦)O,而且这也背离了绿色版的初衷,继续研究吧。

后来注意到api-ms-win-crt-runtime-l1-1-0.dll同目录下有一堆api-xxx的dll,可能都是有联系的,索性整个目录所有dll全都拷到exe旁了,竟然可以启动了 O(∩_∩)O

注意:我用的是win10 sdk中的dll,具体目录在C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86  ,不同机器目录可能略有不同。另外我的程序是32位,所以是x86文件夹的,如果是64位等可以用Windows Kits\10\Redist\ucrt\DLLs下的对应文件夹的dll

仔细一看拷过去的dll中还有一个叫ucrtbase.dll,难道和入口点那个报错有关系,删了后确实又报第二个截图的错误了。。。好坑爹呀,为什么别人都是报丢失dll,就你是报找不到入口点呢(而且还是另一个已存在的dll),害得我纠结了这么久,不管怎么样终于找到制作vs2015程序绿色版的正确姿势了——除了以往的msvc运行时库的多个dll外,还要把win10通用crt相关的多个dll都放到exe旁才可以。

后记:用procexp又看了下绿色版程序在win10机器上加载dll的列表,竟然没有api-xxx那堆dll,一个都没有,看来那些dll确实只是用于其他系统运行win10通用crt程序的,win10本身因为做了原生支持所以就不需要加载那些dll了。

win10下vs2015编译的程序如何运行在win7等系统(无需安装Redistributable)的更多相关文章

  1. win10下vs2015配置Opencv3.1.0过程详解

    下载安装Opencv3.1.0 下载Opencv3.1.0,进入官网,点击opencv for windows即可下载.  点击运行下载好的文件.实际上,opencv的安装程序就是解压缩文件,个人因为 ...

  2. win10下vs2015配置Opencv3.1.0过程详解(转)

    下载安装Opencv3.1.0 下载Opencv3.1.0,进入官网,点击opencv for windows即可下载.  点击运行下载好的文件.实际上,opencv的安装程序就是解压缩文件,个人因为 ...

  3. win10下VS2015局域网调试配置

    一.前言 换win10页挺久了一直没有使用 IISExpress 的局域网功能,今天一使用才发现 win10 比起 win7 下配置多了许多坑. 二.配置步骤 首先我们先来拿到本机 ip 地址 打开命 ...

  4. 4、树莓派的中文:安装ftp,安装gcc,安装qt,编译qt程序,运行qt界面程序

    本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ1222698 1.安装FTP:sudo apt-get install vsftpd 2.配置FTP,修改,/etc/vsftpd.conf # ...

  5. win10下通过编译源码方式在chrome中成功安装react-devtools开发工具插件

    win10下通过编译源码方式在chrome中成功安装react-devtools开发工具插件   1.去git上下载react-devtools文件到本地,https://github.com/fac ...

  6. windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2

    windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2 1.官网下载python3.6.2https://www.python.org/ftp/p ...

  7. win10下vs2015创建asp,net core项目并运行在ubuntu14.04下

    上文说了.net core程序在win10与ubuntu下运行,用的是示例程序(https://github.com/aspnet/cli-samples),今天用vs2015 构建asp.net c ...

  8. Windows下 VS2015编译RocksDB

    VS2015编译RocksDB RocksDB 是一个来自 facebook 的可嵌入式的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库,但主要目的还是嵌入式.Roc ...

  9. Windows下 VS2015编译levelDB(nmake)

    VS2015编译levelDB Leveldb是一个google实现的非常高效的kv数据库,非常适合嵌入到程序中.如果有简单的key-value数据库需求,而又想使用一个数据库服务的话,levelDB ...

随机推荐

  1. Python基础(二)自定义函数

    1.判断字符串,内容是否为数字 我们用python:xlrd读Excel内容时,本来只是输入的整数字,经常读出来的是float类型 我们需要自动转成整型,意思就是说,读出来的和我们输入的一样,但是,我 ...

  2. python操作excel的读、计算、写----xlrd、copy

    import xlrd from xlutils.copy import copy class ExcelUtil: def __init__(self,excel_path=None,index=N ...

  3. Newtonsoft.Json解析数组

    以下是解析json数组: var jsonInfo=[{"name":"abc","id":"1","coun ...

  4. Zookeeper应用之——栅栏(barrier)

    Zookeeper应用之——栅栏(barrier) 栅栏(barrier)简介 barrier的作用是所有的线程等待,知道某一时刻,锁释放,所有的线程同时执行.举一个生动的例子,比如跑步比赛,所有 运 ...

  5. c#链接access数据库

    public ActionResult Index() { OleDbDataAdapter db = new OleDbDataAdapter("select * from [user]& ...

  6. [转载]要提高SQL查询效率where语句条件的先后次序应如何写

    出处:https://www.cnblogs.com/exe19/p/5786806.html 我们要做到不但会写SQL,还要做到写出性能优良的SQL语句. (1)选择最有效率的表名顺序(只在基于规则 ...

  7. Node + Redis 实现分布式Session方案(转载)

    Session是什么? Session 是面向连接的状态信息,是对 Http 无状态协议的补充. Session 怎么工作? Session 数据保留在服务端,而为了标识具体 Session 信息指向 ...

  8. Eclipse新建Java工程出现红色感叹号怎么解决?

    安装了新版本的JDK之后,在Eclipse中新建Java工程出现红色感叹号怎么解决? 其实只要在Eclipse中重新设置一下JDK路径就行了 路径:右键Java工程>>Build Path ...

  9. Kafka学习之(二)Centos下安装Kafka

    环境:Centos6.4,官方下载地址:http://kafka.apache.org/downloads  ,前提是还需要安装了Java环境,本博客http://www.cnblogs.com/wt ...

  10. opencv学习之路(23)、轮廓查找与绘制(二)——访问轮廓每个点

    一.简介 二.画出每个轮廓的每个点 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat src= ...