問題タブ [dllnotfoundexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Windows Vista:DLL'x.dll'を読み込めません:メモリ位置へのアクセスが無効です。(DllNotFoundException)
私は今日の午後、Windows Vistaを搭載した顧客のボックスでテストしていました(彼は家にいましたが、同じ結果のBusiness Editionでテストしています)。
コンピューターのハードウェアIDを取得する.DLLを使用します。使い方はとても簡単で、私が作成したサンプルプログラムは機能します。DLLはAzSdkのThisです。実際、これはWindowsXPで完全に機能します。ただし、奇妙な理由で、プロジェクト内(はるかに大きい)で、次の例外が発生します。
フォルダを完全に制御できるので、何が問題を引き起こしているのかわかりません。プロジェクトはac#.net Windowsフォームアプリケーションであり、外部ライブラリの呼び出しを除いて、すべてが正常に機能します。
私はそれを次のように宣言しています:(注:これはCOMライブラリではなく、登録する必要はありません)。
そして、呼び出しコードは非常に単純です。
サンプルアプリケーションを作成すると機能しますが、私のプロジェクト内では機能しません。XPでは正常に動作します。これを機能させるためにVistaで何をすべきかについてのアイデアはありますか?私が言ったように、フォルダとそのサブフォルダは「Everybody」を完全に制御できます。
更新:VistaSP1がインストールされていません。
更新2: Vista SP1をインストールしましたが、UACを無効にすると、単純なサンプルでも機能しません!!! :(くそービスタ。
c# - DllNotFoundException ですが、DLL は存在します
だから私はそれと対話するための PsyREG.dll と呼ばれる dll を提供するハードウェア乱数ジェネレーターの SDK と、dll のメソッドを使用するための c# ソースを使用しています。
以前は機能していましたが、なぜか機能しなくなりました。現時点では問題のデバイスに実際にアクセスできないため、手が少し縛られているため、多くのことを試すことができません...
しかし、ここに奇妙なことがあります。dll は、いつもと同じ場所にあります。実際、Ahd は をFile.Exists("PsyREG.dll")
返しますtrue
。再確認しましたが、提供された c# ソースがそれをインポートする方法とまったく同じ[DllImport("PsyREG.dll")]
です。
何か案は?
c# - .NETがOpenSSL.NETdllを見つけられないのはなぜですか?
編集(質問全体、それはあまりにも不明確でした)
OpenSSL.NETを使いたい
OpenSSL.NETのインストール手順ページ:インストール
アプリケーションの現在の作業ディレクトリまたはPATHにlibeay32.dllとssleay32.dllがあることを確認してください。完了
.NETプロジェクトで、ManagedOpenSsl.dllアセンブリへの参照を追加します。終わり
私は自分とディレクトリの両方にlibeay32.dll
とを入れました。私もそれらを入れました。ssleay32.dll
bin/Debug
bin/Release
system32
これが私の完全なコードです:
次のエラーが発生します: DLL'libeay32' をロードできませんhttp://localhostr.com/files/a719c5/Error.gif(DLL'libeay32'をロードできません)
プロセスモニターのログは次のとおりです(リクエストに応じて): alt text http://localhostr.com/files/726a46/ProcMon.gif
私は何が間違っているのですか?DLLが見つからないのはなぜですか?
c# - P/InvokeからDllNotFoundExceptionをキャッチします
解決策のある投稿が見つかりました:失敗したDllImportを処理するにはどうすればよいですか?
ホストがVistaシリーズとNTシリーズのどちらのバージョンのWindowsを使用しているかに応じて、OSのバージョンをチェックしてさまざまな処理を実行するアプリを作成しています。Vistaシリーズの場合、(DllImportを使用して)いくつかのDLLをロードしますが、それ以外の場合はこれらを使用しません。問題は、DllImportを使用してそれらをロードすると、それらのDLLがない古いバージョンのWindowsで使用した場合、実行時にDllNotFoundExceptionが発生することです。
DllNotFoundExceptionsをキャッチ/防止/無視するにはどうすればよいですか?未処理の例外イベントで例外を「処理済み」に設定しようとすると、アプリを続行できません。
c# - System.DllNotFoundException: Windows 2003 で DLL を読み込めません
c# プロジェクトで c++ dll を使用しています。window xp マシンでは正常に動作しましたが、window 2003 サーバー (x64) でデバッグ プロジェクトをコピーすると、以下のエラーが発生しました。どうすれば修正できますか。
ありがとう
「System.DllNotFoundException: DLL 'lib.dll' を読み込めません: アプリケーションの構成が正しくないため、このアプリケーションは開始できませんでした。アプリケーションを再インストールすると、この問題が解決する場合があります」
c# - sapnwrfc ライブラリを使用して SAP に接続するにはどうすればよいですか?
私たちのソフトウェアは C# で書かれており、SAP に接続する必要があります。一部のお客様は古いバージョンの SAP を使用しており、他のお客様は SAP PI を使用していないため、Web サービスを介して接続することはできません。
次のように、SAP NetWeaver Remote Function Call Library (sapnwrfc.dll) を介して SAP に接続しようとしました。
- sapnwrfc.dll および NWRFC_6-20004550.SAR の他の dll (icudt34.dll、icuin34.dll、icuuc34.dll、libicudecnumber.dll、libsapucum.dll) を C:\WINDOWS\system32 に追加して、見つけることができます。
- 私の C# コードでは、クラス定義に次を追加します。
[DllImport("sapnwrfc.dll", CharSet = CharSet.Auto)]
public static extern void RfcInit();
そして、作業を行うべきメソッドで以下を行います:
RfcInit();
このコードを実行すると、DllNotFoundException:
DLL 'sapnwrfc.dll' をロードできません: アプリケーションの構成が正しくないため、このアプリケーションは開始できませんでした。アプリケーションを再インストールすると、この問題が解決する場合があります。(HRESULT からの例外: 0x800736B1)
標準の C++ から C# への接続の例
[DllImport("user32.dll", CharSet = CharSet.Unicode)]の実行
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
正常に動作します。
これをうまく機能させるための提案はありますか (JCo を使用して Java プロキシを作成してこの問題を回避する必要はありません)。
c# - DllImport が System.DllNotFoundException を生成する
dll
アプリケーション (C# フレームワーク 4.0 で記述) からアンマネージ コードを使用しようとすると、いくつかの問題が発生します。私は次のようにdll
インポートを使用しています
奇妙なことに、開発環境 (Windows XP) から呼び出すと問題なく動作しますが、運用サーバー (Windows7) では次の例外が生成されます。
System.DllNotFoundException
: DLL をロードできません' C:\MGW_SDK.dll'
: 指定されたモジュールが見つかりませんでした。(HRESULT からの例外: 0x8007007E)Comtpaq.AdminPack.SDKWrapper.fInicializaSDK()
atComtpaq.AdminPack.AdminPaqRepository.InitializeSDK()
inC:\Work\AgroIn\AdminPaqRepository.cs
:line 30
私はすでにDependency Walkerを実行しました。これは、次の依存関係が競合していることを示しています。C:\windows\system32\SHLWAPI.DLL
dll
私はすでにそれを展開ディレクトリにコピーしようとしました
MGW_SDK.dll
オンです(c:\
パスが示すように)
C ランタイム ライブラリを既にインストールしています
また、いくつかの興味深い点にも気付きました。例外として、開発パスが表示されていますC:\Work\AgroIn\AdminPaqRepository.cs:line 30
ここで他に何が問題になる可能性がありますか?
編集
extern
私が使用する/dllimport
メソッドの1つだけを使用して小さなコンソールアプリケーションを構築し、MGW_SDK.dll
問題なく(まったくDllNotFoundException
)実行したため、これは構築中のアプリケーション(WCFサービス)に関連しているようです。このサービスは WAS でホストされていますが、まだ問題が見つかりません。
zeromq - .Netバインディングを使用したZeroMQ DllNotFoundException
私は 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 が見つからない例外を経験した人はいますか?
助けてくれてありがとう、
c# - VistaではDLLが見つからない例外が発生するのに、XPでは発生しないのはなぜですか?
いくつかのマネージドライブラリに依存するアプリがあります。これらのマネージドライブラリは、いくつかのアンマネージドライブラリに依存しています。
XPを実行しているマシンにアプリをデプロイすると、正常に実行されます。Vistaを実行しているマシンで同じことを行うと、DLLが見つからないという例外が発生します。
VS2010セットアッププロジェクトとNSISインストーラーの両方を試して展開を行いましたが、どちらの場合も同じです。
なぜこれが起こるのでしょうか?それを回避するために何ができますか?
更新-詳細
- 両方のインストーラーが.NET4.0のインストールを確認し、必要に応じてインストールします。
- Vistaコンピューターは64ビットですが、インストールは期待どおりにx86プログラムファイルフォルダーに転送されます
- どちらの場合も、私は管理者アカウントを持っています
- DLLは、実行可能ファイルと同じディレクトリに保持されます
- 私の知る限り、ファイルは正しいディレクトリにコピーされています
アップデート2
- 完全なエラーはhttp://pastebin.ca/2046487にあります
- DLLはAudiere.Net.dllで、これは私の1つであり、マネージドライブラリです。
そのエラーがAudiere.Net.dllを見つけることができないことを意味するのか、それとも依存関係の1つが見つからないためにロードできないのかはわかりません。
アップデート3-プロセスモニターからのもの
プロセスモニターを実行した後(Mehrdadに感謝します!)、ステータスが「SUCCESS」ではないエントリがいくつかあります。これらのいくつかは「NAMENOTFOUND」であり、いくつかは「PATHNOTFOUND」です。(デバッガーでのみ使用されていると思っていたPDBファイルを照会することもあります。)実際の障害につながる可能性のあるエントリを特定するのは非常に困難です。とにかく、誰かにとって何か意味がある場合に備えて、ログをアップロードしました(関連するパスを持つようにフィルタリングされています)。
アップデート4-.pdbファイルを追加
だから私はちょっと必死になって、インストーラーの出力に.pdbファイルを含めました。役に立たないと思いましたが、実際にはもっと便利なエラーになりました。単にDLLが見つからないと言うのではなく、BadImageFormatExceptionが発生するようになりました。これをグーグルで検索すると、これはx86でコンパイルされているがx64で実行されているバイナリの一般的な問題であることがわかります(Vistaマシンの場合と同様)。
推奨される解決策は、x86をターゲットにするように強制することですが、Audiere.Net.dllはすでにそうでした。ラップするライブラリに問題があるのでしょうか?