2012-07-27 69 views
11

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

The procedure entry point [email protected]@[email protected]$$QAV0AAZ could not be located 
in the dynamic link library QtCore4.dll 

一切指向有多個版本的DLL安裝。我發現我的Xilinx IDE使用Qt庫,但所討論的DLL是相同的版本。我不是一個真正的軟件傢伙,在這裏不知所措。

回答

14

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

修復它的最簡單方法應該是在PATH環境變量的開始處移動Qt SDK的路徑。這種方式每當你運行一個需要Qt庫的可執行文件時,除非在可執行文件的目錄中已經存在QtCore4.dll,QtGui4.dll ...的副本,否則它將加載SDK附帶的文件(第一個在PATH中找到)。出於這個原因,如果你重新分配你的應用程序,你可能還必須將這些庫運送到它的目錄中。

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

+0

目錄中有QtCore4.dll和QtGui4.dll的副本。這是所有應用程序都需要的。靜態鏈接也不起作用。我準備好將這個重新投入工程師,並告訴他處理命令行版本。 – 2012-07-30 15:19:04

+0

@Matt你的意思是你把你的QtCore4.dll放在應用程序的目錄中,並且仍然顯示這個消息?可能是錯誤的DLL。也許你從QtCreator的目錄中獲得了DLL,但是你應該從SDK開始,因爲它們不是一樣的(並且你的應用程序與後者相關聯)。 – Claudio 2012-07-30 16:12:54

+0

Ran Dependency Walker,並將dll複製到目錄中。不知道我最初使用的是什麼DLL,但它現在起作用。 – 2012-07-30 19:30:55

-1

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

+6

但迫使你在(L)GPL發佈。 – Claudio 2012-07-28 08:40:32

0

使用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