У меня была проблема с Невозможно загрузить DLL 'libzmq' Проблема здесь - местоположение папки i386. Я решил переместить папку i386 / для 32 бит / в корень проекта. Аналогично решению Уоррена выше.

ько начинаю использовать ZeroMQ и экспериментирую с некоторыми образцами. Я использую привязки языка C # и столкнулся с проблемой получения исключения DllNotFound.

Я могу загрузить и запустить образцы на моей машине разработки после того, как скопировал libzmq.dll в Windows / System32, но когда я перемещаю вещи на другие серверы, я получаю сообщение об ошибке, несмотря на то, что libzmq.dll копируется в обе папки, из которых запускаются образцы, и в Windows / System32.

Я поместил clzmq.dll в папку, в которой находится пример приложения, а также libzmq.dll. Кроме того, я поместил libzmq в c: / Windows / System32. Я использую Windows Server 2003 с пакетом обновления 2. Когда я проверяю переменные среды компьютера, WINDOWS / System32 находится в переменной PATH. Я также собрал библиотеку libzmq с помощью Release, а не отладки.

Возможно, я не понимаю, как следует использовать привязку ZeroMQ .Net. Я добавил clzmq.dll (.Net Binding) в свой проект в качестве ссылки и предположил, что clzmq.dll будет автоматически ссылаться на libzmq в переменной Windows PATH WINDOWS / System32.

Кто-нибудь знает, если я ошибаюсь в этом. Обязательная документация C # (http://www.zeromq.org/bindings:clr) заявляет, что «файл библиотеки ZeroMQ нужно будет сделать доступным для работы привязки», но он кажется, что я не смог сделать его доступным, несмотря на то, что скопировал его в переменную PATH.

Кто-нибудь сталкивался с тем, что DLL не обнаружила исключение при использовании привязок ZeroMQ .Net?

Спасибо за помощь,

 Learning118 янв. 2011 г., 23:32
Я решил опубликовать решение для этого, если кто-то столкнется с этим. Libzmq.dll имеет зависимости от MSVCP100.dll, который отсутствовал на компьютере, на котором я пытался запустить приложение. Я понял это, загрузив и запустив средство для отслеживания зависимостей с www.dependencywalker.com и просто запустив его. Он сразу показал недостающую DLL. Затем я установил распространяемый пакет Microsoft Visual C ++ 2010, чтобы исправить недостающую многопоточную DLL, которая была необходима libzmq. Я надеюсь, что это сэкономит другим время.
 Jon E25 мар. 2011 г., 00:43
Learning1, спасибо, что поделились своим решением. Я столкнулся с той же проблемой сегодня, и это сводило меня с ума, пока я не нашел ваш SO пост. Я обнаружил, что если вы собираете libzmq с VS 2008, то зависимость от перенаправления VS2010 C ++ исчезает. Затем он становится зависимым от MSVCR90.dll, который, я полагаю, предустановлен в большинстве версий Windows. Еще раз спасибо.
 dandan7825 мар. 2011 г., 15:20
Вы должны опубликовать это как ответ и выбрать его в качестве решения вашего вопроса. Таким образом, люди смогут найти его легче.
 joshua.ewer21 сент. 2012 г., 21:58
Просто чтобы показать это, хотя я использую версию Windows для 64-разрядных систем, мне нужно было установить распространяемую версию для архитектуры x86. Имеет смысл сейчас, но я потратил впустую час, чтобы прийти к этому пониманию.

Ответы на вопрос(4)

libzmq' Проблема здесь - местоположение папки i386. Я решил переместить папку i386 / для 32 бит / в корень проекта. Аналогично решению Уоррена выше.

как я проверил, что в моей системе есть Microsoft Visual C ++ 2010 Redistributable. Моя ОС - Windows 7 64bit. Я получил библиотеку ZeroMQ от NuGet в Visual Studio 2010.

PS Я нашел решение, чтобы решить мою ошибку. При загрузке ZeroMQ из NuGet в VS на самом деле появляется предупреждение, которое я сначала проигнорировал. Он говорит, чтобы вручную скопировать libzmq.dll в выходной каталог проекта, кроме ссылки clrzmq2. После того, как вручную скопируйте libzmq.dll в выходной каталог, он работает. Кстати, я пытался скопировать libzmq.dll в C: \ Windows \ System32, как упоминалось выше, он тоже не работал.

Надеюсь, это поможет.

д попытался создать объект clrzmq (2.2.3), Windows попыталась загрузить DLL и потерпела неудачу с ошибкой:

Unable to load DLL 'libzmq': The specified module could not be found.

DLL наиболее определенно присутствует. Я пытался использовать различные решения с разрешениями, но все они не смогли решить проблему. Загрузка и установка распространяемого C ++ VS2010 решили мою проблему.

 Eran Betzalel14 февр. 2013 г., 12:57
Спасибо, я бы проголосовал 10 раз, если бы мог :)

Unable to load DLL 'libzmq'

Перейдите в Solution Explorer и убедитесь, что пакет NuGet добавил для вас папки amd64 и i386. Разверните эти папки, выберите каждый файл в них, затем перейдите в окно «Свойства» и выберите «Копировать, если новее» для «Копировать в выходной каталог».

Похоже, что это наиболее элегантное решение проблемы и работает для обеих архитектур автоматически. Windows будет искать текущий путь + i386 / amd64 на основе архитектуры.

 Nitay14 авг. 2015 г., 17:43
Это решило мою проблему. И это тоже довольно элегантное решение

Ваш ответ на вопрос