【问题标题】:libzmq not found by clrzmq in Xamarin Studios/C# applicationclrzmq 在 Xamarin Studios/C# 应用程序中找不到 libzmq
【发布时间】:2015-10-17 01:14:50
【问题描述】:

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

【问题讨论】:

  • 在 Raspian 上有同样的问题。在 Windows 上运行正常... libzmq.dll 在构建目录中。奇数

标签: c# zeromq xamarin-studio


【解决方案1】:

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

【讨论】:

  • 我确实做到了。
【解决方案2】:

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

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

请确保您使用的是最新版本的 clrzmq4,我们今天刚刚运行...

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 是的,libzmq.dll 与 exe 和 clrzmq dll 在同一个目录中。
    【解决方案4】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-23
    • 2019-09-08
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多