我尝试使用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中添加了对这些库的引用。但是在程序构建的时候,当我尝试运行程序时仍然会出现以下错误:
DllNotFoundException: libzmq
ZMQ.Context..ctor (Int32 io_threads)
NetworkZero.Update () (at Assets/SLIP/NetworkZero.cs:26)
有人有任何建议吗?
答案 0 :(得分:0)
确保您已设置'复制本地'对于引用的程序集为true。
答案 1 :(得分:0)
当我添加dll时,我总是将它们添加到Unity中(将它们拖放到某个地方),然后Unity完成了一些魔法并重新生成了IDE项目文件,所有引用都正确无误。
黑暗中的另一个刺 - 如果这些库做互操作,你可能需要它们在一个文件夹“插件”(可能需要直接在资产,“资产/插件”,未经测试)。插件虽然是Unity的专业功能,但它们不适用于网络应用程序。
答案 2 :(得分:0)