Использование VS2017 Community, обновлений, на Win7, обновлений, использование nuget zeroMQ пакета «Install-Package ZeroMQ -Verion 4.1.0.27» для проекта, при создании программы hwclient C # успешно выполняется как форма окна.
При запуске - получите сообщение об ошибке, что zeroMQ.lib не может найти libzmq.dll или что libzmq.dll не является допустимой Windows DLL, а также что libsodium.dll также не может быть найден.Ошибка возникает в файле zeroMQ.dll, когда требуется ZContext.
В проекте используется только пакет nuget ZeroMQ, поэтому НЕ ДОПУСКАЙТЕ доступ к другим ресурсам, иначе какой смысл иметь для него аккуратный пакет nuget (вопрос не в том, как решить проблему с отсутствующей DLL)
using System;
using System.Net;
using System.Windows.Forms;
using ZeroMQ;
namespace InterComm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
string strHostName = "";
strHostName = System.Net.Dns.GetHostName();
IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;
lblMyIPString.Text = addr[1].ToString();
}
private void btnHello_Click(object sender, EventArgs e)
{
string endpoint = "tcp://" + tbTheirIP.Text + ":5555";
using (var context = new ZContext()) <- ERROR
{
using (var requester = new ZSocket(context, SocketType.REQ))
{
requester.Connect(endpoint);
for (int n = 0; n < 3; ++n)
{
string requestText = "Hello";
rtbResponse.Text.Insert(0, "Sending... " + requestText);
requester.Send(new ZFrame(requestText));
using (ZFrame reply = requester.ReceiveFrame())
{
string resp = reply.ReadString();
if (resp.Length == 0)
{
rtbResponse.Text.Insert(0, "Silence from : "+ lblTheirIP.Text);
}
else
{
rtbResponse.Text.Insert(0, "Received: " + reply.ReadString());
}
}
}
}
}
}
}
}
и, наконец,
InterComm.exe Warning: 0 : UnmanagedLibrary[libsodium] Unable to extract the
EmbeddedResource "ZeroMQ.libsodium.i386.dll" to
"C:\Users\techuser\AppData\Local\Temp\ZeroMQ.libsodium.i386.dll".
InterComm.exe Warning: 0 : UnmanagedLibrary[libzmq] Unable to extract the EmbeddedResource "ZeroMQ.libzmq.i386.dll" to "C:\Users\techuser\AppData\Local\Temp\ZeroMQ.libzmq.i386.dll".
Exception thrown: 'System.TypeInitializationException' in ZeroMQ.dll
An unhandled exception of type 'System.TypeInitializationException' occurred in ZeroMQ.dll
The type initializer for 'ZeroMQ.lib.zmq' threw an exception.