2014-04-04 101 views
3

使用ZeroMQ我尝试在新的项目中使用 ZeroMQ便携式类库的.Net和单

服务器和客户端必须通过ZeroMQ进行交互(交换消息)。 拟实现多种客户的Android,Windows中,可能是另一个。 我想就在PCL相互作用的基本逻辑。

的Visual Studio 2013 + Xamarin

我创建PCL项目,安装的NuGet包clrzmq。 创建的测试方法:

public string M1() 
{ 
    using (var c = new Context()) 
    { 
      var subscriber = c.Socket(SocketType.SUB); 
      subscriber.Bind(Transport.TCP, "192.168.123.23:9292"); 
      subscriber.Subscribe("", Encoding.UTF8); // subscribe to all messages 
      var message = subscriber.Recv(Encoding.UTF8, SendRecvOpt.NONE); 
      return message; 
     } 
} 

当我打电话在Android项目这个方法,我看到DllNotFoundException。 在 this question (但为Android)

代码编译所描述的问题,但在运行时 - 用于libzmq.dll错误DllNotFoundException。

你能告诉我如何配置链接libzmq正常吗?

回答

0

xamarin阅读文章后,和我与PCL的Xamarin的局限性经验。这不是一个选项。当您导入塔ZeroMQ它增加了对X86二进制文件和AMD64到项目中。这些二进制文件允许它在X86/amd64平台上使用mono框架,而不是arm(android/ios/windows phone)。

另外的What is a Portable Class Library?的Xamarin文档中它具有的缺点

  • 列表因为相同的可移植类库在多个应用程序之间共享,特定于平台的库不能被引用(例如Community.CsharpSqlite.WP7 )。
  • 可移植类库子集可能不包含否则可用于Android的MonoTouch和Mono(如DllImport或System.IO.File)的类。

的DLLNotFoundException可能是因缺乏的DllImport支持未来