2017-07-29 99 views
0

我想部署我的Qt程序。我使用qmake從我的.pro文件生成Makefile。然後我運行mingw32-make,最後使用mingw32-make install將必要的dll複製到輸出文件夾。我複製了9個DLL,全部放在同一個文件夾(Qt/5.8/mingw53_32/bin)中。所有這些都被複制,沒有問題,除了libstdC++ - 6.dll。即使地址正確,MinGW也不會將libstdC++ - 6.dll複製到輸出文件夾

我檢查了生成的Makefile以查看是否有任何拼寫錯誤。我也檢查了路徑和一切。我正在爲所有9個文件做同樣的事情,但只有libstdC++ - 6.dll有被複制的問題。

下面的代碼行來自我的Makefile安裝目標。我覆蓋了複製目標位置。

-$(INSTALL_FILE) C:\Qt\5.8\mingw53_32\bin\Qt5Core.dll <COPY_TARGET> 
-$(INSTALL_FILE) C:\Qt\5.8\mingw53_32\bin\Qt5Gui.dll <COPY_TARGET> 
-$(INSTALL_FILE) C:\Qt\5.8\mingw53_32\bin\Qt5OpenGL.dll <COPY_TARGET> 
-$(INSTALL_FILE) C:\Qt\5.8\mingw53_32\bin\Qt5PrintSupport.dll <COPY_TARGET> 
-$(INSTALL_FILE) C:\Qt\5.8\mingw53_32\bin\Qt5Svg.dll <COPY_TARGET> 
-$(INSTALL_FILE) C:\Qt\5.8\mingw53_32\bin\Qt5Widgets.dll <COPY_TARGET> 
-$(INSTALL_FILE) C:\Qt\5.8\mingw53_32\bin\libgcc_s_dw2-1.dll <COPY_TARGET> 
-$(INSTALL_FILE) C:\Qt\5.8\mingw53_32\bin\libwinpthread-1.dll <COPY_TARGET> 
-$(INSTALL_FILE) C:\Qt\5.8\mingw53_32\bin\libstdc++-6.dll <COPY_TARGET> 

我想再說一次,C:\Qt\5.8\mingw53_32\bin\libstdc++-6.dll確實存在。

任何幫助將不勝感激。

+1

題外話:請注意,您可以使用windeployqt.exe複製Qt的DLL和需要插件。 –

+0

謝謝Nikos。當我爲自己部署時,我使用windeployqt。但是我正在準備一個項目供人們使用,所以我一旦知道了所有必需的dll,就會嘗試使用我的.pro文件中的qmake的INSTALLS標記將它們複製到輸出文件夾中。 – Deniz

回答

1

字符「+」有時問題在Windows中的文件名,所以用引號括起來的文件的路徑:

-$(INSTALL_FILE) "C:\Qt\5.8\mingw53_32\bin\libstdc++-6.dll" <COPY_TARGET> 
+0

非常感謝,解決了它。我需要一種方法來強制qmake自己放這些引號,因爲我不想每次都進入Makefile,並一直向下滾動以進行此更改。你知道我可以讓qmake自動完成嗎?我已經試過把引號放在.pro文件中,但並沒有將它們添加到Makefile中 – Deniz

+0

@Deniz嘗試在qmake項目文件中將它寫爲$$ shell_quote(「libstdC++ - 6.dll」)。 –

+0

@NikosC。沒有運氣。我試過所有可能的組合,但它沒有奏效。 – Deniz

相關問題