如果我自己在DLL中定义一个函数名字为 recv或者send
编译就提示我 重复定义 似乎在 windows.h 中含有 winsock.h
winsock.h 有函数 recv和send的定义
所有就有了重复定义。怎么解决这个问题?

解决方案 »

  1.   

    DLL劫持么
    #pragma comment(linker, "/EXPORT:recv=_Myrecv,@1")
    #pragma comment(linker, "/EXPORT:send=_Mysend,@2")
    将你定义的recv改名Myrecv,
    send改名Mysend
      

  2.   

    \
    其实我就是想在DLL中输出一个函数名为recv的函数,他就说函数重复定义。
      

  3.   


    我想问
    #pragma comment(linker, "/EXPORT:recv=_Myrecv,@1")
    这句表示什么意思,
    是不是表示下面的意思: 
    1。本DLL 有一个函数名为recv的输出函数。
    2。当其它进程调用本DLL的recv函数的时候,就转为调用本DLL中的Myrecv函数。
    3。本DLL的Myrecv函数为DLL的第一个输出函数。
      

  4.   


    按照你的方法 出现了
    ceshi.exp : error LNK2001: unresolved external symbol _Myrecv
    ceshi.exp : error LNK2001: unresolved external symbol _Mysend
    的提示呀
      

  5.   

    1,那你把关于所有winsock.h 引用函数都去掉吧,我想这不是你想要的.
    2,不知道.
      

  6.   


    那要改动winsock.h文件吧
    我把影响其它的程序使用winsock.h文件
      

  7.   

    晕,不是改动,winsock.h
    是把#include "winsock.h"
    删除.
      

  8.   


    我的DLL中其它函数 还需要很多winsock.h 中的定义呀
      

  9.   


    因为我想 自己写个DLL来替代系统原来的DLL
    嘿嘿。。
      

  10.   

    1 你不要使用winsock2.h,是可以导出这样的函数的。
    2 函数名称本来就不能想写成啥就写成啥,所以还是建议改名。
      

  11.   

    不在导出的头文件中加winsock.h 
    在cpp中加就好了