Declareと参照設定の違いは何でしょうか?


reg  2004-11-02 23:09:07  No: 86440

Declareと参照設定の違いは何でしょうか?

どちらも、自作したdllを参照可能であれば、
Declareのほうを使おうと思ったのですが、
dll内のメソッドが見つかりませんとなりました。

できるだけ、dllをwindows\system32フォルダや
レジストリに登録ということを避けたいです。

実行exeと同じフォルダに、作成したdllをおいておけば使えるような
そのようなことは可能でしょうか?


raki  URL  2004-11-02 23:28:58  No: 86441

>Declareと参照設定の違いは何でしょうか?

自フォルダ、Systemフォルダ、レジストリを順に参照して行くか、
レジストリのみ参照するかの違いでしょうか・・・
詳しくないため、正確には私も答えられません。すみません。

>どちらも、自作したdllを参照可能であれば、
>Declareのほうを使おうと思ったのですが、
>dll内のメソッドが見つかりませんとなりました。

自作したDLLはC++で作られましたか?
それともVB6のActiveX.dllですか?
VB6で作れるActiveX.dllの場合、レジストリ登録が必須となります。
これを行わないと、使用できません。
また、使用する場合は参照設定 or CreateObjectになります。

>実行exeと同じフォルダに、作成したdllをおいておけば使えるような
>そのようなことは可能でしょうか?

これを実現したいのであれば、CにてDLLを作成してください。


java.lang.Nullpo  2004-11-03 00:14:02  No: 86442

あら、V私は「静的DLL」と「動的DLL」の違いとしか思ってませんでしたが...
(VBから見た時は)


魔界の仮面弁士  2004-11-03 00:40:40  No: 86443

> Declareと参照設定の違いは何でしょうか?

Declareステートメント(または、DllImportAttribute属性クラス)は、
『関数を外部公開しているタイプのDLL』に対して利用する物です。
(VB6の場合は、StdCall規約のDLLだけが利用可能です)

参照設定は、ActiveXコンポーネント(または、.NETのDLL)として、
クラスや定数を公開している物に対して使われます。

つまり、対象となる DLL の仕様によって使い分ける事になります。

中には、BASP21.DLL などのように、Declare / 参照設定の両方に対応している DLL もありますが、殆どの DLL は、どちらか一方にしか対応していませんので、どちらのタイプの DLL なのか、作成者に問い合わせてください。
(moricons.dll のように、どちらにも対応していないDLLもあります。)

> dllをwindows\system32フォルダや
Declare では、フルパスで指定する事もできます。
ファイル名だけで指定した場合には、
  1. アプリのあるディレクトリ
  2. カレントディレクトリ
  3. windows\system32\
  4. windows\system\
  5. windows\
  6. 環境変数PATHに含まれるディレクトリ
の順で検索が行われるようです。

> レジストリに登録ということを避けたいです。
COMコンポーネントだとすると、このあたりかな。環境を選びますけど。

[Column This Week : 新しいサイド バイ サイド技術]
http://www.microsoft.com/japan/msdn/library/ja/jpdnthisweek/htm/vbxp/vbxp2.asp

[登録を必要としない COM 相互運用機能]
http://www.microsoft.com/japan/msdn/library/ja/cpguide/html/cpconregistration-freecominterop.asp


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加