13

私は ZeroMQ を使い始めたばかりで、いくつかのサンプルを試しています。C# 言語バインディングを使用していますが、DllNotFound 例外が発生するという問題が発生しました。

libzmq.dll を Windows/System32 にコピーした後、開発用マシンでサンプルを読み込んで実行できますが、他のサーバーに移動すると、libzmq.dll をサンプルの実行元とフォルダーの両方にコピーしてもエラーが発生します。 Windows/System32 に。

サンプルアプリが入っているフォルダに clzmq.dll と libzmq.dll を入れました また、libzmq を c:/Windows/System32 に入れました。Windows Server 2003 Service Pack 2 を実行しています。マシンの環境変数を確認すると、PATH 変数に WINDOWS/System32 が含まれています。また、デバッグではなくリリースを使用して libzmq dll をビルドするようにしました。

ZeroMQ .Net Binding の使用方法を理解していない可能性があります。clzmq.dll (The .Net Binding) を参照としてプロジェクトに追加し、clzmq.dll が Windows PATH 変数 WINDOWS/System32 で libzmq を自動的に参照すると想定しました。

私がこれについて間違っているかどうかは誰にも分かりますか?C# バインディングのドキュメント ( http://www.zeromq.org/bindings:clr ) には、「バインディングを機能させるには、ZeroMQ ライブラリ ファイルを利用できるようにする必要がある」と記載されていますが、それを PATH 変数にコピーします。

ZeroMQ .Net バインディングを使用しているときに、DLL が見つからない例外を経験した人はいますか?

助けてくれてありがとう、

4

4 に答える 4

9

Windows Server 2008 でこの正確なエラーが発生しました。私のコードが clrzmq (2.2.3) オブジェクトを作成しようとするとすぐに、Windows は DLL をロードしようとし、エラーで失敗しました:

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

DLL は間違いなく存在します。アクセス許可を使用してさまざまな解決策を試みましたが、すべて問題を解決できませんでした。VS2010 C++再頒布可能パッケージをダウンロードしてインストールすると、問題が解決しました。

于 2012-10-10T20:27:58.727 に答える
3

NuGet ZeroMQ パッケージを使用していて、エラーが発生した場合:

Unable to load DLL 'libzmq'

ソリューション エクスプローラーに移動し、NuGet パッケージによって amd64 フォルダーと i386 フォルダーが追加されていることを確認します。これらのフォルダーを展開し、その中のすべてのファイルを選択してから、[プロパティ] ウィンドウに移動し、[出力ディレクトリにコピー] で [新しい場合はコピー] を選択します。

これは、問題に対する最も洗練された解決策のようであり、両方のアーキテクチャで自動的に機能します。Windows は、アーキテクチャに基づいて現在のパス + i386/amd64 を検索します。

于 2015-08-11T14:28:14.927 に答える
2

システムにMicrosoftVisualC ++ 2010再頒布可能パッケージがあることを確認した後も、同じ問題が発生します。私のOSはWindows764ビットです。VisualStudio2010のNuGetからZeroMQライブラリを入手しました。

PS、私は私のエラーを解決するための解決策を見つけました。VSのNuGetからZeroMQをダウンロードすると、最初は無視した警告が実際に表示されます。clrzmq2の参照に加えて、libzmq.dllをプロジェクトの出力ディレクトリに手動でコピーするように指示されています。libzmq.dllを手動で出力ディレクトリにコピーした後、現在は機能しています。ちなみに、前述のようにlibzmq.dllをC:\ Windows \ System32にコピーしようとしましたが、うまくいきませんでした。

それが役に立てば幸い。

于 2011-08-08T17:26:17.040 に答える
0

Unable to load DLL 'libzmq' に問題がありました ここでの問題は、i386 フォルダーの場所です。i386 フォルダーの移動を解決しました / 32 ビット用 / プロジェクト ルートに。上記のウォーレンのソリューションに似ています。

于 2018-03-18T07:11:30.143 に答える