1

私は C++ でプログラムしたいくつかの .dll を使用する VB.NET でプログラムを作成しました。dll は、古いバージョンのプログラムの一部の関数をラップします。私の開発用コンピューターではすべて正常に動作しますが、リリース バージョンをビルドし、それと dll をターゲット コンピューターにコピーすると、.exe が正常に起動します。プログラムが .dll から関数を使用しようとすると、例外がスローされ、「DLL "c:/the path/my.dll" を読み込めません。指定されたモジュールが見つかりません。」というメッセージが表示されます。

違いがあるかどうかはわかりませんが、次を使用してメインのvbプロジェクトでdll関数を定義しています:

Declare Function MyFunction Lib "c:/the path/my.dll" (ByVal in1 as Double, ByRef out1 as Double) as Integer

ターゲットの .net フレームワークを確認したところ、開発用コンピューターと同じようにバージョン 4 がインストールされているようです。どちらも Windows XP マシンです。それが.dllをプログラムした方法なのか、vb.netプロジェクトで何かをプログラムしたのかわかりません。どんな助けでも大歓迎です。

4

3 に答える 3

3

絶対パスではなく、実行可能ファイルへの相対パスを使用してください。

または、さらに良いことに、パスをまったく使用せず、dll ファイルの名前だけをリストします。次に、dll をリソースとしてプロジェクトに追加します。その後、セットアップ プロジェクト内に簡単にバンドルできるようになり、デバッグと展開の両方に適した場所に自動的に配置されます。

于 2012-04-05T21:46:56.747 に答える
0

この同じ問題を参照するCodeProject ページへのリンクが見つかりました。

基本的に、DLL ファイルのすべての依存関係が実行場所で利用可能であることを確認する必要があります。Microsoft Dependency Walker を使用すると、VB アプリケーションで使用されている dll ファイルの 1 つが別の dll ファイルを参照しているという解決策にたどり着きました。他の DLL を他の実行ファイルに配置した後、エラーは発生しなくなりました。

于 2015-10-16T16:11:19.640 に答える