無法定位程序輸入點XXXXX於動態鏈接庫qtcore.dll


今天編譯一個QT工程(QT版本:qt-win-opensource-4.8.4-vs2008),編譯成功,但老是運行出錯,如下所示:

QT卸了又裝,都沒用,網上找資料,各種說法有,有說中木馬的,路徑錯的,軟件沖突的,都試了一遍,沒有。

網上查了N多方法,總結一下,大概有兩種:

 (一)qtcore4.dll編譯生成時除了問題。

參考下邊一篇博客,http://www.xjtudll.cn/Exp/62/,下了個dll關聯dll查看器,查看結果如下,原來是QTcore4.dll依賴項卻少,網上下載了MSVCP90.DLL和MSVCR90.DLL。原來如此。

 

(二)不同版本dll數據,path設置時產生干涉。(本文作者出現類型即該種問題)

可以參考如下博文:http://www.cnblogs.com/loongfee/archive/2011/11/30/2268701.html

最近在學習Code::BlocksCB),感覺CB很強大很開放,尤其是它的純插件式的框架,非常贊。

但是從VSCB的轉型實在是痛苦的,在VS下面沒有問題的程序,放到CB中編譯就不能通過。。。

另外,要使用CB+MinGW進行開發還需要將開發中用到的開源庫都用MinGW編譯好,wxWidgetsGDALQtOssim……

網上的教程不少,但多是轉來轉去的,其實就是那一兩個版本,說起來都很順利,按照他們提供的步驟去編譯卻總是遇到一些奇怪的問題,很不好解決。

好在Qt官方網站提供了MinGW版本,直接安裝就行了。這里說說在CB+MinGW環境下使用Qt的方法以及遇到的問題。

這里默認Code::Blocks+MinGW的環境已經配置好。

1、首先在http://qt.nokia.com/downloads/windows-cpp網站上下載QtMinGW庫(300M+),安裝。

相應的VS2008版本可以從http://qt.nokia.com/downloads/windows-cpp-vs2008 下載,比較惡心的是這兩個版本的庫不能安裝在同一個目錄下面。所以我就將MinGW版本的庫安裝在了C:\Qt\4.7.4\MinGW下。

(之前安裝過Qt SDK完全版(1.6G),裝完5G+,居然不包含MinGW版本的庫。。。)

2、然后在“我的電腦屬性高級系統設置高級環境變量”中設置環境變量。

編輯PATH,添加C:\Qt\4.7.4\MinGW\bin”,添加的位置要靠前一點,不然可能會被排在前面的其他版本的Qt庫所覆蓋。我就是被這個問題困擾了好幾天,在安裝完MinGW版本的Qt庫后,在Code::Blocks中新建了一個Qt4的工程,然后Build and Run,總是提示“無法定位程序輸入點qUnregisterResourceData@@YA_NHPBE00@Z於動態鏈接庫 QtCore4.dll”的錯誤,雖然知道是dll庫的問題,但是始終沒查出問題具體出在哪。最后發現時因為之前裝過OSGeo4W,其中包含了Qt庫,而OSGeo4W\bin目錄在PATH中比較靠前,於是后面安裝的MinGW版本的Qt庫一直處於被忽略的狀態。將C:\Qt\4.7.4\MinGW\bin”放到它前面就OK了。

 

綜上,在大量測試DLL程序是,直接在環境變量里設置path添加dll路徑,可能會產生問題。關於DLL如何在VC中調用問題,參見如下博文:

http://www.cnblogs.com/vranger/archive/2013/01/14/2860141.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM