我有运行 TCP 服务器的应用程序。要初始化 TCP,我运行WSAStartup()
. 然后我需要加载第三方dll。Dll 也做一些 TCP 工作并且有一些错误 - 它运行WSACleanup()
而不运行WSAStartup()
。这个错误会阻止我的 TCP 服务器,因为 dll 会WSACleanup()
杀死它。
我无法修复dll。如何避免这种情况。看起来在不同线程中运行使用 dll 和我的 TCP 服务器没有帮助
我有运行 TCP 服务器的应用程序。要初始化 TCP,我运行WSAStartup()
. 然后我需要加载第三方dll。Dll 也做一些 TCP 工作并且有一些错误 - 它运行WSACleanup()
而不运行WSAStartup()
。这个错误会阻止我的 TCP 服务器,因为 dll 会WSACleanup()
杀死它。
我无法修复dll。如何避免这种情况。看起来在不同线程中运行使用 dll 和我的 TCP 服务器没有帮助
正如您在WSAStartup
文档中看到的,WSAStartup
/WSACleanup
执行内部引用计数。因此,您需要做的就是调用WSAStartup
两次。
因此,当您的库调用 时WSACleanup
,它只会将内部计数减少一并且不会释放所有资源。