[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/10/04(Wed) 10:37
投稿者名:よねさん
Eメール:
URL :
タイトル:
ActiveXの共存?
ActiveXのDLLを作成し、複数のPCで開発しています。

自分のPC以外でそのDLLを使用するときにレジストリに登録されてないとうまく動きません。
以下の点がひかかってます。

・参照設定は必要?VBで作成したDLLでも「Declare Function」は可能なのか?
・DLLの作成の方法がそもそも違う?
・DLLの変更があった場合は、必ずEXEも再コンパイルが必要?

開発環境は、Windows2000・VB6です。

お手数ですが、よろしくお願いします。

投稿時間:2006/10/04(Wed) 18:06
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: ActiveXの共存?
> タイトル : ActiveXの共存?
> ActiveXのDLLを作成し、複数のPCで開発しています。
それは共存とは言わないような…。

> ・参照設定は必要?
参照設定はしなくても構いませんが、DLLをレジストリ登録しておく必要はあります。

> VBで作成したDLLでも「Declare Function」は可能なのか?
基本的には不可能です。

> ・DLLの作成の方法がそもそも違う?
どのようにして作成したのかが書かれていない以上、厳密には判断できかねますが、
おそらく作成方法は正しいのだと思います。

> ・DLLの変更があった場合は、必ずEXEも再コンパイルが必要?
DLL がバイナリ互換モードを保っている場合は、呼び出し側のリコンパイルは不要です。
互換性を保てないような変更(メソッド引数の変更、プロパティの削除等)があるならば、
呼び出し側もリコンパイルが必要です。

投稿時間:2006/10/05(Thu) 08:10
投稿者名:よねさん
Eメール:
URL :
タイトル:
Re^2: ActiveXの共存?
よねさんです。

どういって質問していいのかわからなかったのでわかりずらいタイトル
にしてしまいました。

魔界の仮面弁士さん、回答ありがとうございます。

ちなみに、DLL作成を選択すると、クラスモジュールが初期値としてありますが、
クラスということはEXE側でインスタンス化しなくてはいけません。
実体を持つDLLというのは作成できないものなのでしょうか?

投稿時間:2006/10/05(Thu) 12:34
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: ActiveXの共存?
> ちなみに、DLL作成を選択すると、クラスモジュールが初期値としてありますが、
> クラスということはEXE側でインスタンス化しなくてはいけません。

インスタンス化せずに使えるようにしたい場合には、デザイン時に、
そのクラスの Instancing プロパティを GlobalMultiUse モードにしておきます。

そうすれば、
 Dim X As Class1
 Set X = New Class1
 S = X.GetFoo()
と書く代わりに、いきなり
 S = GetFoo()
のような使い方ができます。(参照設定している場合のみ)

投稿時間:2006/10/06(Fri) 14:50
投稿者名:よねさん
Eメール:
URL :
タイトル:
Re^4: ActiveXの共存?
魔界の仮面弁士さん、回答ありがとうございました。

何とかやってみます。