redis 已经编了 X64  dll 设置上,只是从win32改成了 64位程序  
在32位的时候,是不会了错的。
但在64项目调用的时候。还是会报错。
4>ws2_32.lib(WS2_32.dll) : error LNK2005: getsockopt 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: freeaddrinfo 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: setsockopt 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: select 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: getaddrinfo 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: connect 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: accept 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: listen 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: bind 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: getsockname 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: ntohs 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: htons 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: htonl 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: ntohl 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
4>ws2_32.lib(WS2_32.dll) : error LNK2005: getpeername 已经在 ServerCommon.lib(Win32_FDAPI.obj) 中定义
看情况应该是win32_interop.lib对32位有另名处理,但到了X64就没有。
有没有遇到类似情况的大神,求助如何处理啊。

解决方案 »

  1.   

    64位工程中忽略ws2_32.lib试试
      

  2.   

    不能。这个是必须要用的。忽略会有其它问题。
    其实只是同类的函数,在32位时win32_interop 做了别名处理。
    但是他们的64位没做处理,就造成了重定义
      

  3.   

    那就要看看官方源码是否有支持win64的编译
      

  4.   

    https://my.oschina.net/maxid/blog/186506
      

  5.   

    从我安装的WDK搜索 ws2_32.lib 的结果来看, ws2_32.lib 在 amd64 和 i386 两个目录下, X64的 试试 amd64 目录下的