none
由于Visual C++ 2010 项目文件格式及网络通信errno的定义改变对开源社区影响如何?还要多长时间vc10才能被大家接受呢? RRS feed

  • 问题

  • Visual C++ 2010 项目文件格式有了重大的改变,尤其是涉及到环境变量方面,

    同时,网络通信中errno的定义也改了,如下:

    It says that you can #define errno WSAGetLastError() and has the following example: 

    r = recv(...);
    if (r == -1     /* (but see below) */
        && WSAGetLastError() == EWOULDBLOCK)
        {...}
    This code will NOT work in VS2010 because EWOULDBLOCK is 140 and WSAEWOULDBLOCK is 10035L. 
    Some popular libraries like openssl are now broken because of this.

    这两点已经造成流行的第三方开源库不能跟进vc10,如ACE/TAO、openssl、QT等等,微软方面如此更改时,是否考虑到了对生态环境的影响了呢?相比vc9、vc8被社区快速接受的情况,vc10成为主流的障碍该如何来消除并推进呢?


    2010年6月3日 9:16

答案

  • 这个估计是由于从Windows XP开始,Microsoft POSIX subsystem不再被支持,而VC2010只支持XP SP2以上版本的操作系统,所以发布的时候不再测试和POSIX函数的兼容性。如果你仍旧需要支持POSIX的函数,可以使用VC2008附带的Windows SDK头文件(在项目属性中选择使用VC9的toolset)或者像Windows SDK建议的那样修改代码。PS这篇建议文章居然是为"Microsoft C"写的,应该有20多年历史了……



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已建议为答案 Kira Qian 2010年6月4日 6:47
    • 已标记为答案 Kira Qian 2010年6月15日 5:37
    2010年6月3日 19:07
    版主