2013-04-28 27 views
2

我有本地的dll项目,我通过CLI包装从C#中使用。在Initialize我打电话的DLL的方法如何替换WSAStartup(MAKEWORD(2,2),&data);提升:asio?

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

这工作正常。 。 现在我“已经决定移动整个DLL来提高:: ASIO(因为我将它移植到Linux和我想启用/杂志编译器选项)

的问题是 - 在哪里以及如何我应该更换WSAStartup通话?

  • 将其移动到CLI包装或顶层C#项目?
  • 之前一些提振更换:: ASIO调用(调用哪个方法?)

回答

2

Boost.Asio初始化Winsockmain() - 它为此使用静态对象。下面是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在Windows下用/Za,但你也不必这样做是为了让你的代码移植到Linux上。)

+0

我不t需要编译Asio(我已经做到了:),只能在我的项目中使用它 – javapowered 2013-04-28 08:54:42