簡體   English   中英

QT Release build DLL 過程入口點錯誤

[英]QT Release build DLL procedure entry point error

我在 Qt Creator 中構建了一個應用程序,它使用 CImg 進行一些圖像處理。 當我從內部 IDE 運行它時,它運行良好,但如果我嘗試從其目錄啟動它,則會引發以下錯誤。

The procedure entry point ??4QString@@QAEAAV0@$$QAV0AAZ could not be located 
in the dynamic link library QtCore4.dll

一切都指向安裝了多個版本的 DLL。 我發現我的 Xilinx IDE 使用 Qt 庫,但有問題的 DLL 是相同的版本。 我不是一個真正的軟件人,在這里不知所措。

即使庫版本相同,它們也可能不兼容。 例如,它們是用不同的配置編譯的,比如有或沒有 STL 支持、OpenGL、SQL 驅動程序......

修復它的最簡單方法應該是在PATH環境變量的開頭移動 Qt SDK 的路徑。 這樣,每當您運行需要 Qt 庫的可執行文件時,它都會加載 SDK 附帶的那些(在PATH找到的第一個),除非在可執行文件的目錄中已經有 QtCore4.dll、QtGui4.dll... 的副本。 出於這個原因,如果您重新分發應用程序,您可能還必須在其目錄中傳送庫。

另一種選擇是靜態鏈接,但您需要在 (L)GPL 許可下提供源代碼。

使用 DependencyWalker 列出 qtcore4.dll 的加載位置。 我遇到了同樣的問題 - DependencyWalker 顯示 qtcore4.dll 是從 c:\\windows\\system32 加載的 - 但該文件夾中沒有 qtcore4.dll。

注意:在 Windows 7 64 位上,c:\\windows\\SysWOW64 被“映射”為 c:\\windows\\system32。 在這個文件夾中,我找到了 dll - 我重命名了 dll,問題就解決了。

在這里看到這個答案: Qt fresh Gui application crashes on startup, faulting at QtCore4.dll

靜態鏈接庫消除了這個問題。

有同樣的問題 [Windows 10, Qt5 + Mingw] 並且即使在我復制了所有必要的 Qt5 .dll 文件之后也得到了同樣的錯誤。

DependencyWalker 對我來說崩潰了,所以我通過復制文件進行了試錯法。

原來我也需要復制 libstdc++-6.dll 。

這表明可能還有其他庫 - 除了 Qt 庫 - 您需要復制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM