boost :: asio :: io_service抛出异常

好吧,我真的无法弄清楚这一点。 我在MSVC中有一个DLL项目试图使用Asio(来自Boost 1.45.0),但每当我创建我的io_service时,都会抛出异常。以下是我为测试目的所做的事情:
void run()
{
    boost::this_thread::sleep(boost::posix_time::seconds(5));
    try
    {
        boost::asio::io_service io_service;
    }
    catch (std::exception & e)
    {
        MessageBox(NULL, e.what(), "Exception", MB_OK);
    }
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    if (fdwReason == DLL_PROCESS_ATTACH)
    {
        boost::thread thread(run);
    }
    return TRUE;
}
这是消息框显示的内容:   winsock:WSAStartup目前无法运行,因为它用于提供网络服务的底层系统目前不可用 这是MSDN所说的(错误代码10091,WSASYSNOTREADY):   网络子系统不可用。如果Windows套接字实现无法正常运行,则WSAStartup会返回此错误,因为它用于提供网络服务的基础系统当前不可用。用户应检查:相应的Windows套接字DLL文件是否在当前路径中。他们并没有尝试同时使用多个Windows套接字实现。如果系统上有多个Winsock DLL,请确保路径中的第一个适用于当前加载的网络子系统。 Windows套接字实现文档,以确保当前正确安装和配置所有必需的组件。 然而,这似乎都不适用于我(或者我认为)。 这是我的命令行:   / O2 / GL / D“_WIN32_WINNT = 0x0501”/ D“_WINDLL”/ FD / EHsc / MD / Gy / Fo“Release ”/ Fd"Releasevc90.pdb“/ W3 / WX / nologo / c / TP / errorReport:提示 如果有人知道可能有什么问题,请帮助我!谢谢。     
已邀请:
Microsoft建议不要从
DllMain
调用
WSAStartup
,所以最好的办法是在别处创建一个IO线程。   WSAStartup函数通常会导致加载特定于协议的帮助程序DLL。因此,不应从应用程序DLL中的DllMain函数调用WSAStartup函数。     

要回复问题请先登录注册