在Xamarin Studios / C#应用程序中clrzmq找不到libzmq

时间:2014-03-05 21:12:51

标签: c# zeromq xamarin-studio

我在Mac上使用Xamarin Studio,NuGet包含 clrzmq

libzmq.dll上的clrzmq引用。我的应用程序编译得很好,但是当我尝试运行它时,我得到了这个:

Unhandled Exception:
System.DllNotFoundException: libzmq
  at (wrapper managed-to-native) ZMQ.C:zmq_init (int)
  at ZMQ.Context..ctor (Int32 io_threads) [0x00000] in <filename unknown>:0 
  at FeatureSpike.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0 

libzmq.dll肯定存在于构建目标目录中。有谁知道为什么没找到它?

4 个答案:

答案 0 :(得分:1)

您可能想尝试使用netmq(https://github.com/zeromq/netmq),是zeromq的100%C#端口,可能更容易使用,然后调用pinvoke。

答案 1 :(得分:1)

如果您仍在寻找解决方案......

您可以使用clrzmq4并将静态链接的libzmq和libsodium作为本机库添加到您的xamarin解决方案中。

确保您使用最新版本的clrzmq4,我们今天就让它运行...

答案 2 :(得分:0)

libzmq.dll在构建输出目录中的可执行文件旁边吗?

clrzmq NuGet包中包含一个PowerShell安装脚本,用于设置libzmq.dll的构建操作,因此始终将其复制到输出目录。如果您在Mac上添加了NuGet包,则不会运行PowerShell脚本。因此,您需要手动设置构建操作。

libzmq.dll似乎是为Windows编译的本机DLL,因此它无法在Mac上运行。所以看起来你必须在Mac上编译clrzmq。

答案 3 :(得分:0)

您是否在配置中创建了dllmap?

<configuration>
    <dllmap dll="libzmq.dll" target="/usr/local/Cellar/zeromq/4.0.4/lib/libzmq.dylib"/>
</configuration>