跳到主要內容

在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)的對話框。



由於什麼都看不到,連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出來,也可以正常執行了!


張貼留言

這個網誌中的熱門文章

Portable Python

我常常需要把Python寫的script帶到其他電腦使用,因此,一個免安裝,可攜帶的Python就顯得十分重要。最近看過了幾個可攜式Python的方案,下面這個PortablePython是我覺得最合我意的方案。因為它提供了大部分會用到的Python module及工具,甚至連wxPython及PyGame也有。同時也有好用的Python編輯器PyScripter。所有開發Python所需的開發工具都一應俱全了!把它放到隨身碟中,就不用到處幫人安裝Python了。

PortablePython: http://www.portablepython.com/

解決Python script無法在cp65001的console下執行的問題

你是否有這樣的經驗,明明沒問題的script,拿到某的電腦一直看到下面的訊息而無法執行。
LookupError: unknown encoding: cp65001 cp65001是什麼鬼!?其實,它就是UTF8阿!只是,Microsoft喜歡叫他cp65001(code page 65001號)。附帶一提,我們常用的Big5是cp950。想要知道你目前所使用的code page可以在Windows的console視窗執行

一個Python程式可幫檔名加上日期與時間

很多時候,我們希望能夠將檔案或是目錄名稱加上一個時間及日期,以便release。所以,我就寫了一個小小的程式來達到這個目的。我把這個程式貼上來,讓有興趣的人可以拿去使用。
--
#!/usr/bin/env python
# -*- coding: ascii -*-
"""
Usage: cfgfn.py [filename or directory list]
"""
import sys
import os
import time
import re
import glob

ro = re.compile(r'(?P<FN>.*)-[0-9]{8}-[0-9]{4}(?P<EXT>.*)')

for fnl in sys.argv[1:]:
for fn in glob.glob(fnl):
mo = ro.match(fn)
if mo:
pre = mo.group('FN')
ext = mo.group('EXT')
else:
pre, ext = os.path.splitext(fn)
newFn = pre + time.strftime('-%Y%m%d-%H%M') + ext
os.rename(fn, newFn)
print 'Rename %s -> %s' % (fn, newFn)