我在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肯定存在于构建目标目录中。有谁知道为什么没找到它?
答案 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>