2011-10-24 118 views
0

我正在使用QG Creator和MinGW。我不能使用MinGW包含winsock2.h

我包含了「windows.h」並編譯它,但失敗了。錯誤如下:

In file included from c:\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/windows.h:98:0, 
      from util/IdleDetector.h:8, 
      from service\PresenceService.cpp:8: 
c:\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/winsock2.h:771:22: error:  expected unqualified-id before string constant 
c:\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/winsock2.h:1034:95: error: expected identifier before string constant 
c:\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/winsock2.h:1034:95: error: expected ',' or '...' before string constant 

我以爲MinGW路徑丟失,但事實並非如此。我怎樣才能解決這個問題?

+0

你winsock2.h的行771和1034是什麼?你有沒有在windows.h之前明確地嘗試過包括winsock2.h? – thiton

+0

這些行中沒有字符串常量。請顯示您的完整編譯命令,並檢查您是否定義了#。如果'GROUP'被定義爲字符串文字,這兩行將會失效。 – Mat

+0

我用編輯GROUP解決了它。非常感謝你 –

回答

0

windows.hwinsock.hwinsock2.h?兩者不相容。 winsock2.h是爲了替代winsock.h,並且因此重申了許多已經聲明的東西。如果在winsock.h之前包含winsock2.h,那麼winsock2.h將默默禁用winsock.h,並且一切正常。但是,如果在winsock2.h之前包含winsock.h,則會發生各種錯誤。

+0

我解決了它。這與我的想法完全不同。 –