2009-02-09 45 views
2

我使用mingw32-make來編譯使用OpenGL一個Qt項目無數的警告,它編譯正確和一切,但它吐出形式的無數警告消息:MinGW的隨地吐痰約忽略「DLL的進口」屬性

c:/qt3/include/qcolor.h:67: warning: inline function `int qGray(int, int, 
int)' declared as dllimport: attribute ignored 

對於這種特殊的情況下,函數的聲明是:

Q_EXPORT inline int qGray(int r, int g, int b)// convert R,G,B to gray 0..255 
{ return (r*11+g*16+b*5)/32; } 

我的問題是,爲什麼它隨地吐痰這些警告?我如何在不沉默其他合法警告(即與我的代碼直接相關並可能是潛在問題的警告)的情況下使其沉默?

更重要的是,爲什麼mingw首先忽略了dll導入屬性?

回答

0

我認爲如果定義了下面的宏之一,Qt應該只定義Q_EXPORT(Qt 4中的Q_DECL_EXPORT)作爲dllexport/import屬性,所以確保你的makefile或包含Qt頭文件的代碼(它最終會包含qglobal.h)沒有定義它們中的任何一個:WIN32,_WIN32,__WIN32__,WIN64,_WIN64,__WIN64__。或者你可以將Q_EXPORT定義爲編譯(或預處理器)標誌中的任何內容,那麼Qt應該跳過定義它。