在Qt 4.7.4中遇到連結其他程式庫的怪問題(-enable-auto-import)

今天在編譯了Qwt 6.0.1給Qt 4.7.4使用,但是在連結到我自己的程式時遇到了奇怪的問題,首先是編譯時出現了一個奇怪的警告:

:-1: warning: auto-importing has been activated without --enable-auto-import
specified on the command line.

接著就是在執行的時候看連畫面都看不到就跑出下面這個包含錯誤代碼(0xC0000005)的對話框。

[][1]

由於什麼都看不到,連debug的工具都派不上用場。只好到網路上找找有沒有人跟我有一樣的問題。果然找到了下面這篇:

根據這篇文章是說,不知道為何Qt 4.7.4中把一個關於linker的--enable-auto-import參數給拿掉了。所以只要把它加回去就OK了!

查了一下ld的文件,簡單的說,這個選項是把 連結到 _imp 。意思還不是很瞭解,但是我想大概是符號連結的naming convention相容性的處理吧。

接著就是要把這個選項給弄回去了!文章中提到了一個作法是在qmake.conf中對QMAKE_LFLAGS加上"-Wl,--import-auto-import"。qmake.conf是放在 $(QT_DIR)\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++。

但是,不過因為我不確定這個東西有沒有副作用,所以就改在自己程式的pro檔案中加入下面的敘述:

QMAKE_LFLAGS += -Wl,-enable-auto-import

加了這行後,程式就順利的compile出來,也可以正常執行了!

[1]:

comments powered by Disqus