gpt4 book ai didi

c++ - 如何替换 WSAStartup( MAKEWORD(2, 2), &data );带 boost :asio?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:42 40 4
gpt4 key购买 nike

我有我通过 CLI 包装器从 C# 使用的 native dll 项目。在我正在调用的 dll 的 Initialize 方法中

WSAStartup(MAKEWORD(2, 2), &data);

这很好用。现在我决定将整个 dll 移动到 boost::asio(因为我将把它移植到 Linux 并且我想启用/Za 编译器选项)。

问题是 - 我应该在哪里以及如何替换 WSAStartup 调用?

  • 将其移至 CLI 包装器或顶级 C# 项目?
  • 用一些 boost::asio 调用替换它(调用哪个方法?)

最佳答案

Boost.Asiomain() 之前初始化 Winsock - 它为此目的使用静态对象。以下是 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 时进行初始化。

(也就是说,恐怕你不能在Windows下用/Za编译Asio,但你也不必为了使您的代码可移植到 Linux。)

关于c++ - 如何替换 WSAStartup( MAKEWORD(2, 2), &data );带 boost :asio?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16260891/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com