-1

我正在開發一個.NET C++應用程序上運行32位應用程序。我使用的指紋傳感器的主庫只能在32位上工作,並且有很多依賴關係,其中之一就是msvcr110.dll。我知道這個DLL帶有VS C++ Redistributable Package 2012,所以我安裝了它。BadImageFormatException在64位PC

然而,當我跑我得到BadImageFormat例外的應用程序。我用Dependency Walker打開DLL,我發現它在Windows/System32的文件夾中找到msvcr110.dll/msvcr110d.dll,但在Dependency Walker中,DLL以64位格式顯示。這對我來說沒有意義,因爲它是從System32文件夾加載的。

如果我打開msvcr110.dll與Dependency Walker中,它顯示爲32位。爲什麼當指紋傳感器加載庫時,它將它加載爲64位?

任何想法解決這一問題?非常感謝

+0

難道你不爲32位重定向的受害者? 閱讀關於'Wow64DisableWow64FsRedirection'。如果您可以發現並控制加載完成的確切位置,則可以禁用重定向,然後在加載完成後,您可以恢復。 – sergiol

回答

-1

感謝您的答覆:)最後,我走快速路,我爲了得到msvcr110d.dll安裝Visual Studio 2012。然後,我將這兩個dll複製到我的程序路徑中,並且它工作正常......但是,您的選項似乎更好,因爲它不需要使用調試dll。

+0

不,所以問題不是我懷疑的。可能是您的安裝已損壞。 – sergiol