本帖最后由 VisualEleven 于 2011-08-07 20:25:33 编辑

解决方案 »

  1.   

    可能需要更新SDK包,或者使用高版本的VS编译器~
      

  2.   

    对了,我还有个问题:
    #pragma once
    #include <winsock2.h>
    #pragma comment(lib,"ws2_32.lib")
    #include "stdafx.h"
    #include   <afxtempl.h> 
    #ifndef __AFXWIN_H__
    #error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"
    #endif#if defined( _WINDLL)
    #define SERVER_API __declspec(dllexport) 
    #else 
    #define SERVER_API __declspec(dllimport) 
    #endif
    #define MAX_BUF_SIZE 4096
    #define WM_SHOW_MSG WM_USER+100// CDvTcpServerApp
    // 有关此类实现的信息,请参阅 DvTcpServer.cpp
    //typedef void (__stdcall *CBF_NotifyANewConnection)(int cID,int sID,int badd, char* clientip, char* url,int disconnect); 
    typedef void (__stdcall  *pDataBack)(int cid,int idatatype,char* pdata, int ilen,int iUserData);
    typedef void (__stdcall *pMsgBack)(int cid,int opt,int param1,int  param2,int param3,int param4,char *pdata,int len,int iusrdata);
    enum IO_TYPE {
    IO_TYPE_ACCEPT,
    IO_TYPE_READ,
    IO_TYPE_WRITE,
    IO_TYPE_UNKNOWN
    };class   SERVER_API COverLappedEx {
    public:
    OVERLAPPED m_OLap;
    IO_TYPE m_IOType;
    char m_szBuf[MAX_BUF_SIZE];

    COverLappedEx(IO_TYPE ioType) {
    ZeroMemory(&m_OLap, sizeof(OVERLAPPED));
    m_IOType = ioType;
    ZeroMemory(m_szBuf, MAX_BUF_SIZE);
    }
    };class SERVER_API   CPerSocketData {
    public:
    SOCKET m_Socket;
    SOCKET m_AccSocket;

    CPerSocketData() {
    m_Socket = INVALID_SOCKET;
    m_AccSocket = INVALID_SOCKET;
    }
    };
    class SERVER_API  CIOCPServer
    {
    public:
    CIOCPServer(void);
    ~CIOCPServer(void);
    public:
    void SetLastErrorMsg(CString strErrorMsg);
    CString GetLastErrorMsg();
    BOOL WinSockInit();
    void AssociateWnd(CWnd *pWnd);
    BOOL StartServer(UINT uListenPort);
    BOOL PostAccept(CPerSocketData *pSockData);
    BOOL PostRecv(CPerSocketData *pSockData);
    BOOL PostSend(LPCTSTR lpszText, DWORD dwSizeInBytes);
    static DWORD WINAPI ThreadPoolProc(LPVOID lpParam);
    CPerSocketData *AssignSockToCompletionPort(SOCKET tSocket);
    void StopServer();
    private:
    LONG m_ThreadNums;
    CWnd *m_pWnd;
    CString m_strErrorMsg;
    SOCKET m_ListenSocket;
    HANDLE m_hCompletionPort;
    CList <CPerSocketData *, CPerSocketData *> m_ArrSocketData;
    CList <COverLappedEx *, COverLappedEx *> m_ArrOverLapEx;
    };class   SERVER_API COverLappedEx!!!
    导出类我想调用标准约定老是搞不定要怎么弄啊