2011-04-13 133 views
6

我在兩臺開發計算機上編寫使用VS2010的C++應用程序 - 都是Win7 64bit SP1。我使用git來同步存儲庫。C++應用程序無法正確啓動(0xc000000d)

在其中一臺機器上,編譯的可執行文件(也是測試執行程序)停止工作,出現以下錯誤,而在另一臺機器上工作正常,我可以繼續開發。

該應用程序無法正確啓動(0xc000000d)。單擊確定關閉該應用程序。

我嘗試刪除存儲庫並再次克隆它。我也確定我有相同版本的Boost,git,Visual Studio。另外,我嘗試調試(步入),但是在到達任何代碼行之前發生錯誤。

請注意,據我所知,我將跟蹤Visual Studio的解決方案\項目配置文件爲detailed here

我很茫然,你會如何調試呢?

UPDATE 1: 只有Debug版本無法運行。發行版本運行正常

更新2:不起作用確實在其他計算機上工作的可執行文件!

更新3:我已經重新安裝VS2010(完全相同的版本) - 沒有幫助。令人驚訝的是兩臺機器之間的編譯文件大小不一樣。

+4

使用Dependency Walker - http://www.dependencywalker.com/ - 查看是否存在DLL版本差異。 – Erik 2011-04-13 11:31:01

+0

你可以調試它,並檢查,直到它能夠運行? – rturrado 2011-04-13 11:34:48

+0

@rturrado - 我試過調試(步入),但是在到達任何代碼行之前發生錯誤 – Jonathan 2011-04-13 11:37:36

回答

1

看一看前兩名這個問題的答案

Program crashes with 0xC000000D and no exceptions - how do I debug it?

在機器失敗在哪裏,儘量在調試器下運行調試的可執行程序絕不,並更新你的問題說會發生什麼。如果它崩潰了,你能夠在消息框仍然存在的情況下連接調試器,並獲得一個堆棧跟蹤,告訴你它正在崩潰的功能是什麼?

+0

當我在VS2010(F5)中運行它時以及運行可執行文件時,都會發生錯誤。這個錯誤是一個彈出窗口,帶有一個確定按鈕(不放棄\ retry \ ignore選項) – Jonathan 2011-04-17 14:39:41

+0

所以在那個階段,你能夠使用debug-> attach-to-process來附加調試器嗎? – 2011-04-17 14:42:23

1

這是最奇怪的事情....

嘗試刪除「ipch」目錄,然後重建。

希望它適合你,我浪費了這個時間。

+0

我嘗試了幾次git cleanup,這也刪除了ipch目錄無濟於事 – Jonathan 2011-05-14 09:59:54

2

我在Win7/VS2010/C++中突然出現了相同的現象,沒有發出警告。調試應用程序無法啓動,得到0xC000000D在初始化和加載多個DLL。找到了我自己負責的一個基本dll,並使用鏈接器設置來玩。修改設置,不斷重建 - >應用程序啓動,重建所有 - >應用程序崩潰了。在鏈接器設置中將「生成清單」設置爲「否」後,示例應用程序可以正常工作,但主應用程序仍然崩潰。將「生成清單」設置爲「否」爲我的大部分DLL - >應用程序再次以調試模式啓動。這些東西是非常虛假的,因爲有些dll需要修改其他設置的設置。

3

我得到了你提到的同樣的問題。 我的解決方案:

  1. 清潔清單文件和重建
  2. 在屬性頁面級>清單工具 - >確保「其他選項」設置爲無。 (我之前將它設置爲「/ validate_manifest」)。

或者您可以嘗試「嵌入清單 - >否」,重新生成並設置回「是」。這聽起來很荒謬,但它有時候確實有效。我不知道爲什麼。

0
在我的情況

我得到它通過設置工作再次產生清單以NO上

0

我已經改變了「嵌入清單」設置爲NO,然後返回到YES所有項目,但它並沒有幫助。 對於我來說,爲我的程序設置General-> Platform Toolset到Windows SDK 7.1,並且所有依賴的庫在編譯時都有幫助。

1

禁用/啓用預編譯頭爲我解決了這個問題。 我只在調試x64上面臨崩潰 - 我想這與從boost 1.50到1.52的升級有關,同時保留pch文件。

0

這是ipch只刪除整個文件夾,它會清除它。我也困惑了一陣子。

0

我在MSVC2015上運行的項目中使用使用MSVC2010編譯的OpenCV庫時看到了錯誤。從Visual Studio 2015(v140)到Visual Studio 2010(v100)更改項目配置屬性 - >常規 - >平臺工具集解決了錯誤。