Хорошо, я серьезно не могу понять это.
У меня есть проект DLL в MSVC, который пытается использовать 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):
Сетевая подсистема недоступна.Эта ошибка возвращается WSAStartup, если реализация Windows Sockets не может работать, потому что базовая система, которую она использует для предоставления сетевых служб, в настоящее время недоступна.Пользователи должны проверить: что соответствующий DLL-файл Windows Sockets находится в текущем пути.То, что они не пытаются использовать более одной реализации Windows Sockets одновременно.Если в вашей системе более одной DLL-библиотеки Winsock, убедитесь, что первая в пути соответствует загруженной сетевой подсистеме.Документация по реализации Windows Sockets, чтобы удостовериться, что все необходимые компоненты в настоящее время установлены и настроены правильно.
Тем не менее, мне кажется, что ничего из этого не применимо (или я так думаю).
Здесьмоя командная строка:
/ O2 / GL / D "_WIN32_WINNT = 0x0501" / D "_WINDLL" / FD / EHsc / MD / Gy / Fo "Release \" / Fd "Release \ vc90.pdb "/ W3 / WX / nologo / c / TP / errorReport: подсказка
Если кто-нибудь знает, что может быть не так, пожалуйста, помогите мне!Спасибо.