DllNotFoundException: libzmq
Posted
技术标签:
【中文标题】DllNotFoundException: libzmq【英文标题】: 【发布时间】:2012-11-01 01:55:03 【问题描述】:我正在尝试使用 ZeroMQ C# 绑定 (http://www.zeromq.org/bindings:clr) 与服务器进行通信,以实现我在 Unity 中创建的游戏(我使用的是 Mac OS X 10.8)。因此,我创建了一个连接到服务器、发送消息然后接收消息的简单函数:
using UnityEngine;
using System.Runtime.InteropServices;
using System.Collections;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ZeroMQ;
public class NetworkZero : MonoBehaviour
// Use this for initialization
public static NetworkZero instance;
void Start ()
instance = this;
Debug.Log("START NETWORK COMMUNICATION");
// Update is called once per frame
void Update ()
using (ZMQ.Context context = new ZMQ.Context(1))
using (ZMQ.Socket client = context.Socket(ZMQ.SocketType.REQ))
string sendMSG = "CLIENT";
client.Connect("tcp://localhost:31415");
client.Bind("tcp://localhost:31415");
client.Send(sendMSG, Encoding.Unicode);
string message = client.Recv(Encoding.Unicode);
Debug.Log("Received request: " + message);
我按照说明在我的项目中包含了必要的库,并且在 monoDevelop 中添加了对这些库的引用。但是在程序构建时,当我尝试运行程序时仍然出现以下错误:
ZMQ.Context..ctor (Int32 io_threads)
NetworkZero.Update () (at Assets/SLIP/NetworkZero.cs:26)
有人有什么建议吗?
【问题讨论】:
【参考方案1】:确保您已将引用程序集的“复制本地”设置为 true。
【讨论】:
我检查了所有引用的程序集,'Copy Local' 设置为 true。【参考方案2】:当我添加 dll 时,我总是将它们添加到 Unity 中(将它们拖放到某处),然后 Unity 做了一些魔术并重新生成了引用正确的 IDE 项目文件。
在黑暗中的另一个刺 - 如果这些库做互操作的东西,你可能需要它们在文件夹“插件”中(可能需要直接在资产下,“资产/插件”,未经测试)。插件是 Unity 的专业功能,但它们不适用于 Web 应用程序。
【讨论】:
【参考方案3】:我过去在尝试在 32 位应用程序中使用 64 位 dll 时收到此消息。您提到它在编辑器(64 位)中工作,但在构建中没有,我建议您仔细检查您的架构是否与 ZeroMQ 库的架构匹配?为此,请转到 [Unity] > File > Build Settings,然后在 Architecture 下选择 x86_64。
【讨论】:
以上是关于DllNotFoundException: libzmq的主要内容,如果未能解决你的问题,请参考以下文章
错误:“无法找到 UnityARCore”和“DllNotFoundException”
C++ DLL 和 C# 应用程序 WPF:System.DllNotFoundException
DllNotFoundException: libgfxunity3d
Windows Vista:无法加载 DLL“x.dll”:对内存位置的访问无效。 (DllNotFoundException)