今天编译一个工程遇到了这个错误:
atlsocket.inl(26): error C3861: “FreeAddrInfo”: 即使使用参数相关的查找。
网上搜了挺多的资料,说来还是google给力啊,baidu不行啊。找了挺多的方案:
下面这个就参考一下吧,不太理解如何解决这个问题,我试了没有解决我的问题。
今天在编译MPC的时候,出现了这个错误提示,很奇怪,前段时间编译都是一次性通过的。G了一下,找到了一个解决办法:在项目属性中预处理器定义设“WINVER=0x0502”,查了一下MSDN:
Minimum system required | Macros to define |
---|---|
Windows Server 2003 family | _WIN32_WINNT>=0x0502 |
Windows XP | _WIN32_WINNT>=0x0501 |
Windows 2000 | _WIN32_WINNT>=0x0500 |
Windows NT 4.0 | _WIN32_WINNT>=0x0400 |
Windows Me | _WIN32_WINDOWS=0x0490 |
Windows 98 | _WIN32_WINDOWS>=0x0410 |
Internet Explorer 6.0 | _WIN32_IE>=0x0600 |
Internet Explorer 5.01, 5.5 | _WIN32_IE>=0x0501 |
Internet Explorer 5.0, 5.0a, 5.0b | _WIN32_IE>=0x0500 |
Internet Explorer 4.01 | _WIN32_IE>=0x0401 |
Internet Explorer 4.0 | _WIN32_IE>=0x0400 |
Internet Explorer 3.0, 3.01, 3.02 | _WIN32_IE>=0x0300 |
也就是说假定当前的环境为Windows 2003,上次编译通过的确也是在Windows 2003下,现在的环境是Windows 2000 SP4,那在执行的时候会不会出问题呢?不知道,如果碰到了再说吧。
Goolgle出的一个帖子:
这里面的一个:
Please try the suggested above workaround. This is conflict of atlmfc from PSDK and VS. Do this:
Include
$(VCInstallDir)include
$(VCInstallDir)atlmfc\include
C:\Program Files\Microsoft Platform SDK\include
C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Include
$(FrameworkSDKDir)include
Libraries
$(VCInstallDir)lib
$(VCInstallDir)atlmfc\lib
C:\Program Files\Microsoft Platform SDK\lib
C:\Program Files\Microsoft DirectX 9.0 SDK (February 2005)\Lib\x86
That should do it.
发现自己的IDE确实是如此的问题,更改了一下包含顺序,问题解决,挺开心,这个问题之前已经遇到过一次,忘记了当时如何处理的,这次总结一下以备参考。