0

私は VFP 7 で書かれたアプリケーションを持っています。アプリケーションのどこかで、次を使用して dll の関数を呼び出します。

declare long FunctionName in DLL_NAME.dll string@, string@
.
.
.
RETURN FunctionName( StringParam1, StringParam2)

この関数を呼び出すとエラーが発生します:

The following error has occurred:
Message: Cannot load 32-bit DLL d:\folder\DLL_NAME.dll.

32/64 ビットの regsvr を使用して dll を登録しようとしましたが、うまくいきませんでした。

問題の特定に役立つ情報: dll ファイルはローカルではなく、ネットワークにマップされたドライブのフォルダーにあります。

ご助力ありがとうございます。

4

2 に答える 2

0

VFP が 64 ビットをサポートしていないことは別として、ネットワーク経由で dll をロードしようとしているという事実を確認します。

考えられる問題としてそれを排除し、ローカルにコピーしてそこからロードします...

VFP アプリケーションを含め、ELSE 以外のものはすべて排除してください。VFP コマンド ウィンドウから直接開始し、単純な .prg ファイルを用意するだけです。その中には、宣言だけを入れて、dll ファイルのローカル コピーを参照します。パラメーターの値を設定してから、関数を呼び出します。

それが機能しない場合は、アプリケーションのどこで呼び出されても問題ありません...条件と環境のセット全体を削除しただけです。

これは、インターネットからデータを要求するアプリで何かをしようとするときにクライアントに提供するサポートのようなものです。手動でブラウザーにアクセスし、アプリがアクセスしようとしている URL を入力します。ブラウザからアクセスできない場合は、ファイアウォール、IP ブロック、またはその他が原因で、アプリとは関係ありません。同様の状況に陥っている可能性があります。他のすべての要素を除外し、いくつかの要素だけを取得して、問題をそれ自体に分離して完全にテストします。

于 2012-04-11T21:35:38.853 に答える
0

dll が共有ネットワーク上にあることが問題である可能性が高いことに同意します。ファイルをローカルマシンにコピーすることで、過去にこの問題を解決しました。

ただし、この記事 (以下のリンク) によると、.Net フレームワークに問題がないことを伝える特別な構成ファイルを追加すると、FoxPro アプリ (またはその問題については任意の .exe) がネットワーク ドライブから dll を使用できるようになります特定のアプリのネットワーク dll にアクセスします。

リンクは次のとおりです。 http://www.west-wind.com/webconnection/docs/index.htm?page=_36e0qlogr.htm

于 2012-04-15T03:14:49.343 に答える