动态库大意是一个用于网络查询的对话框,对话框初始化的时候要创建一个socket对象,代码如下:
m_pSock=new SockClient(this);
if (!m_pSock->Create())
{
AfxMessageBox("Socket创建失败!!!!!!");
m_bSvrState=false;
}
else
{
if(!m_pSock->Connect(strSvrAddress, nPort))
{
AfxMessageBox("Socket连接失败");
m_bSvrState=false;
}
else
{
m_bSvrState=true;
m_pSock->Initialize();  //初始化CSocket中的变量
}
}
我也设定了一个导出函数:extern AFX_EXTENSION_MODULE DataClientDLL;#ifdef PNS_IMPL
#define MYDECLARE_PNS _declspec(dllexport)
#else
#define MYDECLARE_PNS _declspec(dllimport)
#endifextern MYDECLARE_PNS SockClient  *m_pSock;但是在调用这个dll时,弹出“Socket创建失败!!!!!!”,
PS:我已经设置了一个指针来调用对话框,但是一直没有办法在创建对话框的时候创建socket;
实在不知道为什么,请各位大虾帮帮忙,谢谢啦!!

解决方案 »

  1.   

    Socket要初始化。
    加入
     if(!AfxSocketInit())
        AfxMessageBox("Failed to Initialize Sockets",MB_OK| MB_ICONSTOP);
    DLL中要用AFX_MANAGE_STATE(AfxGetStaticModuleState());来允许MFC函数的调用.
      

  2.   

    按照楼上所说Socket建立了,但是AFX_MANAGE_STATE(AfxGetStaticModuleState());这一句加在什么地方呢???
      

  3.   

    m_pSock=new SockClient(this);
    if (!m_pSock->Create())
    运行完这句CSocket::Create returned 1 ,现实Socket建立,以前一直返回0。
    但是接着就弹出警告!
    估计是AFX_MANAGE_STATE(AfxGetStaticModuleState());没加的问题。不知道要加到哪里?
      

  4.   

    BOOL CYourDllApp::InitInstance()
    {
    CWinApp::InitInstance();
    AFX_MANAGE_STATE(AfxGetStaticModuleState());if(!AfxSocketInit())
        AfxMessageBox("Failed to Initialize Sockets",MB_OK| MB_ICONSTOP); return TRUE;
    }
      

  5.   

    多谢帮忙。但是我用的是扩展的MFC动态链接库,就没有App函数,怎么办呢?
      

  6.   

    问题已经解决,分已送出,多些guxingfeiyu(孤星飞雨)帮忙!