1. 程式人生 > >程式打包,"錯誤:應用程式無法啟動,因為應用程式的並行配置不正確。有關詳細資訊,請參閱應用程式事件日誌,或使用命令列sxstrace.exe"工具解決辦法

程式打包,"錯誤:應用程式無法啟動,因為應用程式的並行配置不正確。有關詳細資訊,請參閱應用程式事件日誌,或使用命令列sxstrace.exe"工具解決辦法

<span style="font-size:18px;">最近專案功能做完,基本測試也過了一下,程式打包,在自己的的電腦上面執行正常,但是當把程式拷貝到其他沒有安裝開發環境的電腦上面,程式報如下錯誤:</span>

 一

在網上搜索資料,http://jingyan.baidu.com/article/95c9d20d4a1726ec4e7561ff.html,根據這個解決方案,安裝了所有的執行時庫(2005,2008,2010,2012等)、framework,但是沒有用。折磨了我快兩天這個問題。

發現解決不了,只能繼續在網上搜索,發現了我們清單檔案和執行時庫的兩個選項,下面我講解一下我用清單檔案和正確安裝執行時庫解決這個問題的方案。

1、清單檔案   

  (1)VS2005以後執行庫採用清單檔案來進行查詢,清單檔案分為嵌入和不嵌入,嵌入的將會連結到exe檔案中,而不嵌入的放在exe並行目錄中,可以修改

  (2)有關清單檔案的設定有兩個  右鍵》屬性》連結器》清單檔案》生成清單 

                                                                右鍵》屬性》清單工具》嵌入清單

  (3)a、生成清單選擇 是

            b、嵌入清單選擇 否

            在生成檔案裡面可以找到*.exe.manifest,開啟,可以發現,

<span style="white-space:pre">		</span><pre name="code" class="html"><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

        網上網友說,版本號為9.0.21022.8,我用的是VS2008,雖然清單檔案中的版本號是9.0.21022.8,但是我們專案真正載入的是9.0.30729版本,導致找不到,載入失敗。還是先說按照網友們改清單檔案是如何解決的吧。

     c、首先找到VS安裝目錄下的執行庫,C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT,我是安裝在C盤的,並且我的是debug版本,拷貝Microsoft.VC90.DebugCRT.manifest、msvcm90d.dll、msvcp90d.dll、msvcr90d.dll這四個檔案到exe目錄底下,開啟,Microsoft.VC90.DebugCRT.manifest,裡面的版本是9.0.30729.6161,和我們自己生成的版本不一致,我們改為上面一致9.0.21022.8。這樣程式就會以為我們剛剛拷貝的版本是9.0.21022.8,進而呼叫。   

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <noInheritable></noInheritable>
    <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.30729.6161" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    <file name="msvcr90d.dll" hashalg="SHA1" hash="d57abe3cbe47c78d4a98158ed0256c540b8f1e2e"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>zSAij6xdGHXPGZt2sx3FuDliqtE=</dsig:DigestValue></asmv2:hash></file> <file name="msvcp90d.dll" hashalg="SHA1" hash="92076b706551dcfef3e0dfaefa6974b012b54bd6"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>3KjR7Y2ERz1wAb2zyiLcBQ8Jvjg=</dsig:DigestValue></asmv2:hash></file> <file name="msvcm90d.dll" hashalg="SHA1" hash="8433e3e08aeb16ae9c1fa515e265763907241e62"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>t+3q6m0V0ZpyNqL+1SNwHqhMRQs=</dsig:DigestValue></asmv2:hash></file>
</assembly>

d、一般如果是VS2008+DeBug+(/MDd)這樣拷貝就可以了,但是我的程式因為執行時要呼叫VS2010的第三方庫,所以要拷貝相應版本的執行庫到exe目錄底下,C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT,msvcp100d.dll,msvcr100d.dll

e、如果是VS2008+release+/MD版本的,C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT,拷貝這個目錄下的三個檔案

      VS2008+release +/MDd的,則需要同時拷貝兩個版本的執行庫,並修改清單檔案。至於我們程式呼叫的第三方的dll,也要根據debug和release拷貝相應版本

f、無論是debug或者是release,反正主要是看*.exe.manifest 檔案裡面有幾個清單選項

2、執行時庫的選擇,右鍵-》屬性-》C\C++》選項》執行庫

     我們看到有/MT,/MTd,/MD, /MDd四個選項,我的專案預設debug是/MDd,release版本下是/MD,帶d的是加除錯資訊的,也就意味著你的執行庫都要加d。

    通過上面的e、f描述,應該也有點明白了,為什麼我們裝了相應的執行庫,我們的程式還是報錯,

原因是:一般我們安裝的執行庫Redistributable,都是隻帶release版本的庫的,所以如果你的專案的執行庫選項是帶d的時候,也會報錯,解決辦法是安裝執行庫runtime(同時包含debug和release),當然你在網上搜索runtime也很難找到安裝檔案。可以到VS的安裝目錄下去找,但是VS2010需要特殊處理才可安裝。

下一篇文章,我會分享VS2008 和 VS2010 的執行庫供大家下載。

相關推薦

程式打包"錯誤應用程式無法啟動因為應用程式並行配置正確有關詳細資訊參閱應用程式事件日誌使用命令sxstrace.exe"工具解決辦法

<span style="font-size:18px;">最近專案功能做完,基本測試也過了一下,程式打包,在自己的的電腦上面執行正常,但是當把程式拷貝到其他沒有安裝開發環境的電腦上面,程式報如下錯誤:</span>  一 在網上搜索資料

應用程式無法啟動因為應用程式並行配置正確有關詳細資訊參閱應用程式事件日誌使用命令sxstrace.exe工具解決方法

【原創】 轉載請註明出處 問題解決方法僅限於我的情況,就當給大家個提示。 我的電腦環境:Windows 7 64位 編譯器環境:VS2005 出現這個問題可能是因為引用了MFC的東西,並且工程設定為 在共享DLL中使用MFC 【解決方法一】:改為在靜態庫中使用MFC(

無法啟用請求的服務“http://localhost:59308/SysService.svc”有關詳細資訊參見伺服器的診斷跟蹤日誌

將wcf 中svc檔案程式碼 <%@ ServiceHost Language="C#" Debug="true" Service="OperateCenter.Services.SysService" CodeBehind="SysService.svc.cs"

應用程式無法啟動因為應用程式並行配置正確解決辦法

可以先利用sxstrace跟蹤除錯應用程式執行時需要的動態庫的版本和路徑。 步驟: 1.利用管理員身份執行命令提示視窗 2.輸入sxstrace.exe Trace -logfile:C:\trace.log(路徑自定義),開始跟蹤 3.執行應用程式,回車,完成跟蹤生

VS開發問題應用程式無法啟動 因為程式並行配置正確 解決方案

1. 首先,可以參考百度經驗的文章進行設定, http://jingyan.baidu.com/article/cdddd41c620e3d53cb00e11c.html 2.如果還沒有出現同樣的錯誤的情況下,可以參考在編寫MFC應用程式的專案配置引數問題: VS2008

exe應用程式無法啟動因為應用程式並行配置正確

問題:exe應用程式無法啟動,因為應用程式的並行配置不正確。有關詳細資訊,請參閱應用程式事件日誌,或使用命令列 sxstrace.exe 工具。 原因查詢: 1)開始→所有程式→附件→右鍵命令提示符→以管理員身份執行 2)輸入sxstrace.exe Trace -logfile:C

解決"應用程式無法啟動因為應用程式並行配置正確"問題

解決"應用程式無法啟動,因為應用程式的並行配置不正確"問題 在使用中科院中文分詞ICTCLAS50_Windows_32_C時,執行其中的Demo,出現錯誤,顯示如下: 這是因為要開啟的程式是在Windows32下開發的,而我的系統是Win7(64位),由於使用的平臺不一

應用程式無法啟動因為應用程式並行配置正確 解決方案

錯誤: 應用程式無法啟動,因為應用程式的並行配置不正確。請參閱應用程式事件日誌,或使用命令列sxstrace.exe工具”問題的處理方法。方法一:1. 開始 - 執行(輸入services.msc)- 確定或回車,開啟:服務(本地); 2. 我們在服務(本地)視窗找到:Wi

如何解決應用程式無法啟動因為應用程式並行配置正確

當遇到應用程式打不開時,提示報錯“應用程式無法啟動,因為應用程式的並行配置不正確”,該類問題大部分原因為缺少c++執行庫。 解決方法: 利用sxstrace跟蹤除錯應用程式執行時需要的動態庫的版本和路徑。 步驟: 1.利用管理員身份執行命令提示視窗 2.輸入sx

應用程式無法啟動因為應用程式並行配置正確

今天在使用註冊機啟用軟體時,提示如下資訊:   解決方案: 1.雙擊註冊機,跳出錯誤資訊; 2.右擊windows鍵 -- 事件檢視器 -- windows日誌 -- 應用程式 -- 雙擊第一個“錯誤” 從中可以看到事件資訊:x86 、9.0.21022.8 3.百度搜索:x86

win系統安裝apache服務提示“應用程式無法啟動因為應用程式並行配置正確

在window 2008 系統環境下安裝 apache2.2 執行 >httpd.exe -k install提示:應用程式無法啟動,因為應用程式的並行配置不正確。有關詳細資訊,請參閱應用程式事件 日誌,或使用命令列 sxstrace.exe 工具。 各種度娘之

如何解決"應用程式無法啟動,因為應用程式並行配置正確"問題

文章1,轉載自:http://jingyan.baidu.com/article/cdddd41c620e3d53cb00e11c.html 文章2,轉載自:http://blog.sina.com.cn/s/blog_705b14b30100p4la.html 前言:

谷歌Chrome瀏覽器應用程式無法啟動,因為應用程式並行配置正確問題

總結網上的幾種解決情況: 方法一: 開始 - 執行(輸入services.msc)- 確定或回車,開啟:服務(本地); 我們在服務(本地)視窗找到:Windows Modules Installer服務,檢視是否被禁用; 如果Windows Module

1、在控制檯使用sql插入語句插入中文時報如下錯誤 Incorrect string value: '\xD5\xC5\xC8\xFD' for column xxx..//正確的字串

1、在控制檯使用sql插入語句插入中文時報如下錯誤: Incorrect string value: '\xD5\xC5\xC8\xFD' for column xxx..//不正確的字串,屬於伺服器錯誤。 解決方法如下: 以下操作皆為在資料庫登陸之後操作 //1.檢視資料庫伺服器接收的編碼( charac

Windows Server 2008 Apache並行配置正確解決辦法

在阿里雲上買了一個ECS雲伺服器,阿里雲預裝的是64位的Windows Server 2008.我先在伺服器上配置了IIS,想部署一個ASP網站上去。後來又由於種種原因,放棄了ASP,準備轉PHP,那

因為應用程序的並行配置正確

rec etl rect 配置文件 sse cati architect 彈出 點擊 Windows7平臺上有一個強大的SxsTrace工具,可以跟蹤調試應用程序運行時需要的動態庫的版本和路徑。 SxsTrace使用的方法: 1、首先必須以Administrator

google chrome瀏覽器 程序無法啟動並行配置正確

進入 文件 ica 修改 csdn tps src 沒有 tails 啟動電腦後打開chrome彈出如下信息: 系統:win7 進入chrome的安裝路徑 C:\Program Files (x86)\Google\Chrome\Application 兩個版本文件夾,一

spss並行配置正確解決方案

spss並行配置不正確的問題,解決方案問題描述:spss正版需要收費的,所以在網上找的許多免費版本難免會出現一些問題,如下圖所示,網上也有許多解決方法,但是我試了都沒有解決問題,現在將我的解決方案解釋如下:解決方案:1、找到spss的安裝檔案目錄2、找到vc開頭的檔案,根據版

啟動虛擬機器會有錯誤報告二進位制轉換與此平臺上的長模式相容此虛擬環境中的長模式將被禁用因此需要使用長模式的應用程式無法正常執行

1.先安裝VMware2.常建立虛擬機器3.啟動虛擬機器,啟動會有:二進位制轉換與此平臺上的長模式不相容。此虛擬環境中的長模式將被禁用,因此需要使用長模式的應用程式將無法正常執行  解決辦法:需要開啟BIOS系統把  Intel  Virtual Technology 改為e

解決"應用程式配置正確程式無法啟動"

“D:\Program Files\Tencent\QQ\Bin\QQ.exe”的啟用上下文生成失敗。 找不到從屬程式集 Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18