如果是MFC dll, 试着去掉extern "C"
如果是Win32 dll, 试着去掉__declspec(dllexport)

解决方案 »

  1.   

    我用MFC DLL 确实要去掉哦,不过,我的WSAAsyncSelect(异步套接字)还是获取不到接收的消息,是消息没有传到dll里面吗??我消息的定义是
    public:
    afx_msg LRESULT OnSockGetS(WPARAM,LPARAM);
    DECLARE_MESSAGE_MAP()
    在CFMDlg 对话框类里面,,
    不知道哪里出错了
      

  2.   

    if(SOCKET_ERROR==WSAAsyncSelect(m_CMySocket.m_SrvSocket,NULL,UM_SOCK_GETS,FD_READ))
    请问楼主, 第2个参数可以是NULL?
      

  3.   

    int WSAAsyncSelect(
      SOCKET s,
      HWND hWnd,
      unsigned int wMsg,
      long lEvent
    );hWnd==NULL?
      

  4.   

    我也遇到同样的问题在MFC程序中,我是建立对话框的形式,用WSAAsyncSelect把对话框设为异步,并绑定为网络事件响应窗口,但是,对话框的句柄的类型是CWnd,而WSAAsyncSelect的第二个参数是HWND类型,明显是类型对不上,该如何用该函将当前对话框设为网络事件响应对话框。
      

  5.   

    解决了,关于以话框名柄,是在开始DoModal前时的 m_pMainWnd的CWnd 的MFC类封装下的m_hWnd成员,即为对话框的窗口句柄。
      

  6.   

    直接::theApp.m_pMainWnd->m_hWnd即可
      

  7.   

    明显是第二个参数是NULL造成的错误号是10022充分说明了这一点,你可以查一下Error Lookup,上面的说明是"提供了一个无效的参数".