1. 程式人生 > >轉載-不安裝vc2015 Redistributable解決api-ms-win-crt-runtime-l1-1-0.dll丟失錯誤

轉載-不安裝vc2015 Redistributable解決api-ms-win-crt-runtime-l1-1-0.dll丟失錯誤

.py 目錄 參考 end cx_freeze ade timezone inter cells

一、背景

最近用到python下的cx_Oracle模塊,開發環境中測試正常,用cx_freeze打包後,到用戶機器上一部署,各種奇奇怪怪的問題頻出,運行環境如下:

a、開發環境:64位win10操作系統,安裝32位python,32位oracle client,32位firefox。

b、生產環境:64位win7操作系統,64位win8操作系統,32位win7操作系統,32位win8操作系統……比較復雜,各種情況都有。

問題主要有兩個:1、python經典的中文字符問題,2、vc2015依賴問題,這裏重點說下vc2015依賴問題。

錯誤信息如下,提示api-ms-win-crt-runtime-l1-1-0.dll缺失。

技術分享

技術分享

二、原因分析

原因很簡單,cx_oracle是在vc2015下編譯的,所以運行cx_oracle.pyd需要vc2015運行環境。

百度了一下,發現問題非常普遍,解決方案大同小異(其中又以這個地址的信息最準確全面,http://blog.csdn.net/huqiao1206/article/details/50768481)

總的來說整個過程非常耗時,堪稱現實版“多米諾骨牌效應”,為了一個vc2015運行環境,就差沒把操作系統的重裝。

具體處理過程如下,與帖子中基本一致。

1、安裝vc2015 發行包,最後出錯,提示需要先安裝KB2999226 補丁。

2、安裝KB2999226補丁,又提示需要安裝win7 sp1(後來發現win8系統,也有同樣問題)。

3、安裝win7 sp1時,由於機器長期未正常打開update,安裝sp1的時候,又遇到一個新的錯誤,各種補丁。

技術分享

三、新的解決方案

前述是常規解決方案,慶幸的是經過多方搜索和反復嘗試,最終找到了新的解決方案,思路如下:

1、到正常的機器,或者就在開發環境,去搜索api-ms-win-crt-runtime-l1-1-0.dll文件。

結果在C:\windows\system32,以及C:\Windows\SysWOW64,以及C:\Program Files (x86)\Mozilla Firefox中都找到了該文件。

三個目錄下都有,到底選哪個呢?涉及到一個新的64位系統32位dll的問題。我參考了這篇文章,https://jingyan.baidu.com/article/454316ab73ce1ef7a7c03a01.html

規則如下:

a、64位操作系統,32位程序,選擇syswow64下dll

b、64位操作系統,64位程序,選擇system32下dll

c、32位操作系統,32位程序,選擇system32下dll

2、拷貝所有api-ms開頭的dll ,以及msvcp140.dll,vcruntime140.dll,ucrtbase.dll到程序目錄。

一共44個文件。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 驅動器 D 中的卷是 新加卷 卷的序列號是 D:\python 的目錄 2017/03/24 02:06 18,624 api-ms-win-core-console-l1-1-0.dll 2017/03/24 02:06 17,600 api-ms-win-core-datetime-l1-1-0.dll 2017/03/24 02:06 17,600 api-ms-win-core-debug-l1-1-0.dll 2017/03/24 02:06 18,104 api-ms-win-core-errorhandling-l1-1-0.dll 2017/03/24 02:06 21,696 api-ms-win-core-file-l1-1-0.dll 2017/03/24 02:06 18,112 api-ms-win-core-file-l1-2-0.dll 2017/03/24 02:06 18,112 api-ms-win-core-file-l2-1-0.dll 2017/03/24 02:06 18,112 api-ms-win-core-handle-l1-1-0.dll 2017/03/24 02:06 18,112 api-ms-win-core-heap-l1-1-0.dll 2017/03/24 02:06 18,104 api-ms-win-core-interlocked-l1-1-0.dll 2017/03/24 02:06 18,624 api-ms-win-core-libraryloader-l1-1-0.dll 2017/03/24 02:06 20,672 api-ms-win-core-localization-l1-2-0.dll 2017/03/24 02:06 18,624 api-ms-win-core-memory-l1-1-0.dll 2017/03/24 02:06 18,112 api-ms-win-core-namedpipe-l1-1-0.dll 2017/03/24 02:06 19,136 api-ms-win-core-processenvironment-l1-1-0.dll 2017/03/24 02:06 20,160 api-ms-win-core-processthreads-l1-1-0.dll 2017/03/24 02:06 18,624 api-ms-win-core-processthreads-l1-1-1.dll 2017/03/24 02:06 17,600 api-ms-win-core-profile-l1-1-0.dll 2017/03/24 02:06 17,600 api-ms-win-core-rtlsupport-l1-1-0.dll 2017/03/24 02:06 18,112 api-ms-win-core-string-l1-1-0.dll 2017/03/24 02:06 20,160 api-ms-win-core-synch-l1-1-0.dll 2017/03/24 02:06 18,624 api-ms-win-core-synch-l1-2-0.dll 2017/03/24 02:06 19,136 api-ms-win-core-sysinfo-l1-1-0.dll 2017/03/24 02:06 18,112 api-ms-win-core-timezone-l1-1-0.dll 2017/03/24 02:06 18,112 api-ms-win-core-util-l1-1-0.dll 2015/06/07 07:08 11,616 api-ms-win-core-xstate-l2-1-0.dll 2017/03/24 02:06 19,136 api-ms-win-crt-conio-l1-1-0.dll 2017/03/24 02:06 22,208 api-ms-win-crt-convert-l1-1-0.dll 2017/03/24 02:06 18,624 api-ms-win-crt-environment-l1-1-0.dll 2017/03/24 02:06 20,160 api-ms-win-crt-filesystem-l1-1-0.dll 2017/03/24 02:06 18,624 api-ms-win-crt-heap-l1-1-0.dll 2017/03/24 02:06 18,624 api-ms-win-crt-locale-l1-1-0.dll 2017/03/24 02:06 28,864 api-ms-win-crt-math-l1-1-0.dll 2017/03/24 02:06 25,792 api-ms-win-crt-multibyte-l1-1-0.dll 2017/03/24 02:06 72,896 api-ms-win-crt-private-l1-1-0.dll 2017/03/24 02:06 19,136 api-ms-win-crt-process-l1-1-0.dll 2017/03/24 02:06 22,720 api-ms-win-crt-runtime-l1-1-0.dll 2017/03/24 02:06 24,256 api-ms-win-crt-stdio-l1-1-0.dll 2017/03/24 02:06 24,256 api-ms-win-crt-string-l1-1-0.dll 2017/03/24 02:06 20,672 api-ms-win-crt-time-l1-1-0.dll 2017/03/24 02:06 18,624 api-ms-win-crt-utility-l1-1-0.dll 2015/06/07 07:08 11,616 api-ms-win-eventing-provider-l1-1-0.dll 2017/03/24 02:06 440,120 msvcp140.dll 2017/03/24 02:06 917,184 ucrtbase.dll 2017/03/24 02:06 83,784 vcruntime140.dll 44 個文件 37,191,043 字節 0 個目錄 8,842,960,896 可用字節

至此,成功解決api-runtime確實錯誤,無需安裝vc2015 runtime ,也就無需升級sp1。

總結:

1、最開始的啟發其實來自於搜索,偶然搜索到的firefox目錄,發現一系列api開頭的文件。

2、膽大心細,反復嘗試,最開始走了很多彎路,包括什麽註冊dll之類,其實都是錯誤的,關鍵是在ucrtbase.dll文件必須有。

<--end-->

轉載-不安裝vc2015 Redistributable解決api-ms-win-crt-runtime-l1-1-0.dll丟失錯誤