2010-09-10 52 views
0

我們有一個使用帶有託管代碼的.dll構建的vs2010項目。我在vs2010中構建了.dll,目標是.NET Framework 4.0(也嘗試過客戶端配置文件),這是2010年您可以使用的唯一選項。當我去運行它時,它不能初始化,我認爲它有些不兼容......但我不知道它會是什麼。有沒有人有任何想法?應用程序未能正確初始化

另外,我還下載了一個修補程序,它允許你做增量託管構建(本來這不是一個功能,2010年)

謝謝!

+0

現在你希望有人會根據這些信息產生一個答案?請描述所有項目(目標平臺等),錯誤的詳細信息,配置文件中的內容等。 – 2010-09-10 15:48:23

+0

另外,增量構建與什麼有關?你沒有嘗試過嗎? – 2010-09-10 15:48:54

+0

對不起,我不知道問題是多麼模糊。我認爲這是管理的.dll(因此是增量構建)的問題,因爲它在VS2008中運行良好。據我所知,將其移至2010年,沒有任何變化。我們正在使用Ogre 1.7,以Windows爲目標,並且對於日誌文件或任何內容都沒有輸出......它永遠不會成爲主流。確切的錯誤是「應用程序未能正確初始化(0xc000007b)。單擊確定以終止應用程序。」 – 2010-09-10 16:09:45

回答

2

異常0xc000007b(STATUS_INVALID_IMAGE_FORMAT)幾乎總是在64位版本的Windows上生成。因爲你的程序運行在64位模式下,並且試圖加載一個包含非託管32位代碼的DLL。或者相反。

確保託管程序集的平臺目標設置爲任何CPU。這在VS2010中不再是默認設置。項目+屬性,生成選項卡,平臺目標設置。請務必對Debug和Release配置進行更改。

如果您不知道DLL可能是什麼,那麼請觀察使用SysInternals的ProcMon實用程序加載DLL的程序。

+0

Linker-Advanced中名爲「Target Machine」的設置被設置爲Machinex86,這是正確的。這就是你正在談論的環境......我找不到你指的那個。此外,我做了一個Dependency Walker,它回來了3個缺少.dll:MSVCR90D.DLL,IESHIMS.DLL和WER.DLL。並且它表示存在「導入/導出不匹配或加載失敗」:OGREMAIN_D.DLL和OIS_D.DLL。也許我必須在本地構建Ogre的東西...... – 2010-09-10 17:12:04

+0

那麼,它是否在64位版本的Windows上運行?不,我正在談論C#項目設置。這與目標機器設置無關。依賴Walker不再是一個好工具,它在並行緩存中遇到麻煩,請嘗試ProcMon來找到麻煩製造者。此外,不要部署調試版本,您不能分發msvcr90d.dll – 2010-09-10 17:21:09

+0

不確定64位,沒有一個可用的atm。 C#項目已正確設置。我會弄清楚如何使用ProcMon,感謝幫助順便說一句。 – 2010-09-10 17:43:14