• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 132  文章 - 51  trackbacks - 0
            <2011年7月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(7)

            隨筆分類(lèi)

            隨筆檔案

            文章分類(lèi)

            文章檔案

            cocos2d-x

            OGRE

            OPenGL

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            今天編譯工程的時(shí)候遇到了這個(gè)問(wèn)題,網(wǎng)上搜了下,掃噶,備忘一下
            問(wèn)題描述:在 VC 6.0中使用socket相關(guān)的函數(shù)時(shí)沒(méi)有什么問(wèn)題,可是到了.net下就有以下類(lèi)似的錯(cuò)誤,
            [C++ Error] winsock2.h(109): E2238 Multiple declaration for 'fd_set'
            [C++ Error] winsock.h(54): E2344 Earlier declaration of 'fd_set'
            [C++ Error] winsock2.h(112): E2146 Need an identifier to declare
            [C++ Warning] winsock2.h(144): W8017 Redefinition of 'FD_SET' is not identical
            [C++ Error] winsock2.h(153): E2238 Multiple declaration for 'timeval'
            [C++ Error] winsock.h(97): E2344 Earlier declaration of 'timeval'
            [C++ Error] winsock2.h(209): E2238 Multiple declaration for 'hostent'
            [C++ Error] winsock.h(153): E2344 Earlier declaration of 'hostent'
            [C++ Error] winsock2.h(222): E2238 Multiple declaration for 'netent'
            [C++ Error] winsock.h(166): E2344 Earlier declaration of 'netent'
            [C++ Error] winsock2.h(229): E2238 Multiple declaration for 'servent'
            [C++ Error] winsock.h(173): E2344 Earlier declaration of 'servent'
            [C++ Error] winsock2.h(241): E2238 Multiple declaration for 'protoent'
            [C++ Error] winsock.h(185): E2344 Earlier declaration of 'protoent'
            [C++ Error] winsock2.h(327): E2238 Multiple declaration for 'in_addr'
            [C++ Error] winsock.h(269): E2344 Earlier declaration of 'in_addr'
            [C++ Error] winsock2.h(385): E2238 Multiple declaration for 'sockaddr_in'
            [C++ Error] winsock.h(319): E2344 Earlier declaration of 'sockaddr_in'
            [C++ Error] winsock2.h(395): E2238 Multiple declaration for 'WSAData'
            [C++ Error] winsock.h(329): E2344 Earlier declaration of 'WSAData'
            [C++ Error] winsock2.h(411): E2146 Need an identifier to declare
            [C++ Warning] winsock2.h(455): W8017 Redefinition of 'SO_DONTLINGER' is not identical
            [C++ Warning] winsock2.h(512): W8017 Redefinition of 'AF_IPX' is not identical
            [C++ Warning] winsock2.h(540): W8017 Redefinition of 'AF_MAX' is not identical
            [C++ Error] winsock2.h(546): E2238 Multiple declaration for 'sockaddr'
            [C++ Error] winsock.h(492): E2344 Earlier declaration of 'sockaddr'
            [C++ Error] winsock2.h(586): E2238 Multiple declaration for 'sockproto'
            [C++ Error] winsock.h(501): E2344 Earlier declaration of 'sockproto'
            [C++ Error] winsock2.h(625): E2238 Multiple declaration for 'linger'
            [C++ Error] winsock2.h(625): E2228 Too many error or warning messages

            Solution:

            This problem arises because windows.h (at least, that version of it) includes not winsock2.h but winsock.h; sadly when Microsoft wrote winsock2.h they chose neither to change windows.h to include winsock2.h, which replaces winsock.h, nor to include windows.h from winsock2.h and then add the definitions for the new Winsock 2 API methods & structures (this might seem reasonable since Winsock 2 does, strictly speaking, replace Winsock 1, but since the API must be fully backwards-compatible the distinction is somewhat meaningless and there's no real benefit to making winsock2.h standalone).

            The fix is thankfully simple: always "#include <winsock2.h>" before windows.h.

            However, you must remember that if windows.h has been included by (for example) a higher-level header file that is subsequently including your header file, it's too late - so you must make sure that the higher-level header files respect this convention also.

            It is however rarely necessary to modify the header files of libraries or other code modules you are using just because you include their header files, and their header files include windows.h - you can just include winsock2.h before you include the library's header files.


            在包含jrtplib有時(shí)候我也遇到這個(gè)問(wèn)題,解決方法與之相同。一句話,在#include<windows.h>之前 #include <winsock2.h> 問(wèn)題就可以解決。

            問(wèn)題描述]
               在包含了<windows.h>以及<winsock2.h>的工程中,編譯有時(shí)會(huì)出現(xiàn)如
            下錯(cuò)誤:

                 error C2011: 'fd_set' : 'struct' type redefinition
                 error C2011: 'timeval' : 'struct' type redefinition
                                 ....
                 error C2375: 'accept' : redefinition; different linkage
            [原因分析]
               主要原因是因?yàn)?lt;windows.h>中包含了<winsock.h>頭文件,由于其版
            本的不同,導(dǎo)致出
            現(xiàn)上述的錯(cuò)誤。<windows.h>中相關(guān)代碼如下:
                           #ifndef WIN32_LEAN_AND_MEAN
                           #include <cderr.h>
                           #include <dde.h>
                           #include <ddeml.h>
                           ........
                            #ifndef _MAC
                           #include <winperf.h>
                           #include <winsock.h>
                           #endif
                            .......

                           #include <commdlg.h>
                           #endif
                           #endif
            [解決方案]
                由以上代碼可以看出如果在沒(méi)有定義WIN32_LEAN_AND_MEAN宏
            的大前
            提下windows.h有可能包含winsock.h 頭文件,因此我們得出一個(gè)很簡(jiǎn)單
            的解決方
            法就是在包含<windows.h>之前定義WIN32_LEAN_AND_MEAN宏,如
            下所示:
            #define WIN32_LEAN_AND_MEAN
            #include <windows.h>

             原文地址 http://blog.sina.com.cn/s/blog_4906d564010094p8.html
            posted on 2010-10-23 14:01 風(fēng)輕云淡 閱讀(982) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C++
            久久久久一级精品亚洲国产成人综合AV区 | 美女久久久久久| 久久天天躁狠狠躁夜夜2020| 久久人人爽人人爽人人av东京热 | 国产精品99久久久精品无码 | 久久久久久久女国产乱让韩| 久久久久亚洲精品无码蜜桃| 国产成人综合久久精品尤物| 国产精品久久新婚兰兰| 91精品国产91久久久久久| 久久经典免费视频| 国内精品欧美久久精品| 国内精品久久久久影院日本| 亚洲一区精品伊人久久伊人| 国产精品久久久久久搜索| 狠狠色丁香婷婷久久综合五月 | 国产亚洲色婷婷久久99精品91| 久久中文字幕精品| 久久精品国产99久久香蕉| 99久久777色| 午夜精品久久久久久久| 亚洲va久久久久| 欧洲国产伦久久久久久久| 国産精品久久久久久久| 99久久国产亚洲高清观看2024| 亚洲AV无码久久| 一本久道久久综合狠狠爱| 无码人妻久久一区二区三区蜜桃| 免费观看成人久久网免费观看| 久久午夜伦鲁片免费无码| 伊人色综合久久天天人手人婷 | 久久精品国产精品亚洲精品 | 99精品伊人久久久大香线蕉| 国产亚洲欧美成人久久片| 久久久一本精品99久久精品88| 久久久久亚洲AV片无码下载蜜桃| 亚洲精品成人久久久| 波多野结衣久久| 久久人人爽人人爽人人AV| 97久久久久人妻精品专区 | 久久狠狠爱亚洲综合影院 |