我有本机dll项目,我通过C#通过CLI包装器使用它。在动态链接库的Initialize方法中调用
WSAStartup(MAKEWORD(2, 2), &data);这个很好用。现在,我决定将整个dll移动到boost::asio (因为我将将其移植到Linux,并希望启用/Za编译器选项)。
问题是-我应该在哪里以及如何替换WSAStartup调用?
发布于 2013-04-28 08:30:38
Boost.Asio在Winsock之前初始化main() -它为此使用了一个静态对象。以下是winsock_init.hpp的摘录
// Static variable to ensure that winsock is initialised before main, and
// therefore before any other threads can get started.
static const winsock_init<>& winsock_init_instance = winsock_init<>(false);因此,在您的示例中,Winsock将在dll加载时被初始化。
(这就是说,恐怕您不能在Asio下用/Za编译/Za,但也不必这样做才能将代码移植到Linux。)
https://stackoverflow.com/questions/16260891
复制相似问题