2012-02-03 18 views
2

Jpegs在我的開發人員機器上很好,但在我將應用程序部署到新機器時不受支持。樣式表中使用的所有jpeg文件仍由應用程序資源構建,但從不顯示。QT:無法將JPEG功能部署到新鮮的Windows機器上

  1. 我嘗試部署「imageformats」文件夾,可執行文件夾的子,含有「qjpeg4.dll」裏。

  2. 我試着鏈接到我的.pro文件中的qjpeg4.lib,使用上面指定的內容。

仍然沒有好處。我需要指定哪些代碼?

+0

「imageformats」文件夾應該是可執行文件夾的*子*。那只是一個錯字嗎? – 2012-02-03 21:42:12

+0

是的。它是exe文件夾和可執行文件(* .exe)的兄弟。仍然沒有好處。 – JasonGenX 2012-02-03 21:46:22

+0

正如你所描述的,你的設置正是我所擁有的。它應該工作。也許你正在構建你的應用的調試版本,所以它正在尋找'qjpeg4d.dll',或者你不小心部署了調試插件的DLL? – 2012-02-03 21:53:16

回答

0

這只是一個猜測,但我想知道是否存在一些無法在虛擬機上解析的插件依賴項。就像你說的那樣,它是一個簡單的文件/文件夾的東西,所以它可能會找到插件的DLL。但也許該DLL無法加載,因爲它不能解決一個,如果它的依賴。

最有可能的罪魁禍首是C++運行時。你是在應用程序目錄中並行部署,還是通過可再發行組件安裝?如果前者,插件可能無法找到它們,因爲它位於不同的目錄中。爲了跟蹤這一點,你可以使用「Dependency Walker」和「SxSTrace.exe」工具。

+0

這很有趣。我的可執行文件夾中有「Microsoft.VC80.CRT」文件夾。我也有jpeg DLL的「imageformats」文件夾。有趣的是,如果我將相同的「Microsoft.VC80.CRT」複製到「imageformats」文件夾中,它在虛擬機上運行良好。但如果我只是尋找「Visual Studio 2005可再發行組件」並將其安裝在虛擬機上,它將無法單獨工作。就好像「Microsoft.VC80.CRT」與您可以從Microsoft下載的內容不同。很奇怪。 – JasonGenX 2012-02-06 21:41:14

+0

好吧,那麼你誤解爲Windows部署。您需要在您的測試機器上安裝msvc redistributable,以使其正常工作。你不應該複製你的應用程序「就像那樣」複製MSVC redist – 2012-02-07 12:36:05

+0

@ RM1970 - 是的,WinSxS邏輯可能會非常混亂。 C++運行時存在許多*缺陷。有關概述,請參閱http://msdn.microsoft.com/en-us/library/ms235342(v=vs.90).aspx – 2012-02-07 13:30:23