2012-01-03 51 views
1

我是使用QT的新手,所以我想這有一個簡單的答案,但它無法幫助我。我正在將應用程序移植到QT中,並且我開始使用QTEditor來完成此任務。我的編譯器是MinGw和QT版本是4.7.4,操作系統是Windows 7.QT,包括使用QTEditor的.dll

在編譯和鏈接中所有情況都很好。在運行期間,我得到退出代碼0xc0000135,這意味着缺少依賴關係。問題中的依賴關係是我自己創建的C庫,也是用mingw編譯的,因此不存在二進制兼容性問題。另外,如果我將.dll放在與生成的可執行文件相同的目錄中,應用程序運行良好。

這裏是.pro文件的相關部分:

win32:LIBS += C:\Projects_SourceCode\MyLib\Bin\Release\MyLib.dll 
win32:INCLUDEPATH += C:\Projects_SourceCode\MyLib\ 

我缺少什麼?這編譯和鏈接很好,但稍後可執行文件無法找到「MyLib.dll」。我想避免把它放在路上。 QTEditor中沒有辦法讓可執行文件知道在哪裏搜索.dll嗎?

我習慣於使用Codeblocks IDE,並且從那裏開始真的很容易做到這一點,所以我認爲QTEditor也允許這樣的選項。任何幫助,將不勝感激。

+0

這已被問過。 http://stackoverflow.com/questions/718447/adding-external-library-into-qt-creator-project。考慮閱讀手冊。 – 2012-01-03 09:46:12

+0

-L標誌是否也影響系統在運行應用程序時查找dll的位置?據我所知,這隻適用於編譯,這在這裏工作得很好。 – 2012-01-04 00:40:40

回答

1

您可以將它添加到PATH變量中,僅用於運行環境(而不是整個系統) - 您可以在項目屏幕中操作運行環境。顯然,這隻適用於調試,不適用於生產可執行文件。爲了分發你的應用程序,考慮將dll與主可執行文件放在相同的目錄中。

在哪裏尋找DLL是(至少在windows上)不是以可執行文件寫的 - 系統首先在可執行目錄中查找,然後查看PATH目錄,所以你不能以任何其他方式進行操作。在哪裏尋找DLL是執行的問題,而不是編譯,所以不要指望qmake項目文件來幫助你。