我正在尝试使用ZeroMQ C#绑定( http://www.zeromq.org/bindings:clr )与服务器进行通信,用于我在Unity中创建的游戏(我使用的是MacOSX10.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中添加了对这些库的引用。但是,当程序构建时,当我尝试运行程序时,我仍然得到以下错误:
DllNotFoundException: libzmq
ZMQ.Context..ctor (Int32 io_threads)
NetworkZero.Update () (at Assets/SLIP/NetworkZero.cs:26)有人有什么建议吗?
发布于 2012-11-13 00:10:09
请确保已将引用的程序集的“Copy Local”设置为true。
发布于 2012-11-14 23:18:44
当我添加了all后,我总是将它们添加到Unity中(将它们拖放到某个地方),然后Unity会变一些魔术,并重新生成具有正确引用的IDE项目文件。
另一个秘密--如果这些库做了互操作的东西,你可能需要把它们放在"Plugins“文件夹中(可能需要直接放在assets下,"Assets/Plugins",没有测试)。插件是Unity的一个专业特性,但是它们不能在web应用上工作。
发布于 2017-04-22 18:53:12
我以前在尝试在32位应用程序中使用64位dll时就遇到过这个问题。你提到它可以在编辑器(64位)中工作,但在构建版本中没有,我建议你仔细检查一下你的架构是否与ZeroMQ库的架构匹配?要执行此操作,请转到“统一”>“文件”>“构建设置”,然后在“架构”下选择x86_64。

https://stackoverflow.com/questions/13347156
复制相似问题