「ActiveXコンポーネントはオブジェクトを生成できません」というメッセージ


KAI  2012-06-01 15:48:04  No: 143324  IP: 192.*.*.*

VC6で作成したActiveX(DLL)を、VB6から参照設定して使っています。

あるPCでは実行出来たのですが、別のPCで実行しようとすると、
「ActiveXコンポーネントはオブジェクトを生成できません」というエラーが出てしまいます。

別のPCへは、ActiveXのプロジェクトを持っていってリビルドし、VBの参照設定も見直しました。

1点気になっているのは、ActiveXをリビルドした際、
「too many methods in the interface  requies Windows NT 4.0 SP3 or greater  〜」という警告が出たことです。
気にしていなかったのですが、これが原因ということは考えられるのでしょうか?

また、これ以外に何か原因となるようなことをご存知ではないでしょうか?

よろしくお願いいたします。

編集 削除
魔界の仮面弁士  2012-06-01 20:37:17  No: 143325  IP: 192.*.*.*

> あるPCでは実行出来たのですが、別のPCで実行しようとすると、
動作する環境もあるということは、コードの問題ではなく環境の問題のようですね。
VB 系よりも VC 系コミュニティの方が、情報が得られるかも知れません。


> 「ActiveXコンポーネントはオブジェクトを生成できません」というエラーが出てしまいます。
エラーの要因として思いつくものとしては、下記のようなものがあります。

(a)レジストリに正しく登録されていない。
(b)オブジェクトを作成する権限またはライセンスが不足している。
(c)DLLそのものではなく、DLLが内部で利用する依存ファイルが不足している。


(a) の場合は、実行環境へのレジストリ登録がされているかを
確認してみてください。もしも手動で登録する場合には、管理者権限にて
32bit OS では %WINDIR%System32\Regsvr32.exe
64bit OS では %WINDIR%SysWOW64\Regsvr32.exe
を使って登録することになります。



(b) については、セキュリティ系ソフトでブロックされていないか、
レジストリ項目の参照権限があるか、といったところです。
あとは DCOM 利用なら、起動とアクティブ化のアクセス許可などでしょうか。

また、内部で他の DLL 等を利用している場合、そのコンポーネント側で
問題が発生していないかも確認してみてください。


(c)については、たとえば ATL や MFC のライブラリ等です。
たとえば ATL90.DLL とか MSVCR90.DLL とか MFC80.DLL などですが、
これは実行環境にて Dependency Walker 等で調査するのが手っ取り早いかと。


> VBの参照設定も見直しました。
参照設定せずにレイトバインドで呼び出すことはできますか?


> too many methods in the interface  requies Windows NT 4.0 SP3 or greater  
MIDL2362 のエラーでしょうか?
インターフェイスに 110 を超えるメソッドが定義されている場合、
Windows NT4.0 SP3 以上が必要とされ、そのような警告が発生するそうです。

編集 削除
腰が痛い  2012-06-07 01:13:10  No: 143326  IP: 192.*.*.*

開発環境と実行環境のOSとかサードパーティの部品の有無とか
書いたら解決の早道になるかも
多分ActiveXで使ってるDLLが足りないか登録されてないだけだと思う。
#ビルド環境がある幸せな環境があるなら実行して試せないの?
#コピーしただけだと駄目なDLLもあるよ

編集 削除