簡體   English   中英

boost :: asio :: io_service引發異常

[英]boost::asio::io_service throws exception

好吧,我真的無法解決這個問題。

我在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"Release\\vc90.pdb“ / W3 / WX / nologo / c / TP / errorReport:提示

如果有人知道怎么了,請幫幫我! 謝謝。

Microsoft建議不要從DllMain調用WSAStartup ,因此最好的選擇是在其他地方創建IO線程。

WSAStartup函數通常會導致加載特定於協議的幫助程序DLL。 因此,不應從應用程序DLL中的DllMain函數中調用WSAStartup函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM