Declareと参照設定の違いは何でしょうか?
どちらも、自作したdllを参照可能であれば、
Declareのほうを使おうと思ったのですが、
dll内のメソッドが見つかりませんとなりました。
できるだけ、dllをwindows\system32フォルダや
レジストリに登録ということを避けたいです。
実行exeと同じフォルダに、作成したdllをおいておけば使えるような
そのようなことは可能でしょうか?
>Declareと参照設定の違いは何でしょうか?
自フォルダ、Systemフォルダ、レジストリを順に参照して行くか、
レジストリのみ参照するかの違いでしょうか・・・
詳しくないため、正確には私も答えられません。すみません。
>どちらも、自作したdllを参照可能であれば、
>Declareのほうを使おうと思ったのですが、
>dll内のメソッドが見つかりませんとなりました。
自作したDLLはC++で作られましたか?
それともVB6のActiveX.dllですか?
VB6で作れるActiveX.dllの場合、レジストリ登録が必須となります。
これを行わないと、使用できません。
また、使用する場合は参照設定 or CreateObjectになります。
>実行exeと同じフォルダに、作成したdllをおいておけば使えるような
>そのようなことは可能でしょうか?
これを実現したいのであれば、CにてDLLを作成してください。
あら、V私は「静的DLL」と「動的DLL」の違いとしか思ってませんでしたが...
(VBから見た時は)
> 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
ツイート | ![]() |