C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: タイプライブラリインポータ エラー


(過去ログ 51 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■28081 / inTopicNo.1)  タイプライブラリインポータ エラー
  
□投稿者/ ソル (3回)-(2008/11/19(Wed) 15:42:03)

分類:[.NET 全般] 

VB.NET(2005)でActiveX.DLLを参照設定してリビルドしたのですが、

「タイプライブラリインポータで、IUnknownから派生していないインターフェイスが見つかりました:'_HiddenInterface'」

という警告が出てしまい、原因が分からず警告メッセージを消すことが出来ておりません。


これはDLL側で何か設定が足りないのでしょうか?


教えて下さい。
引用返信 編集キー/
■28091 / inTopicNo.2)  Re[1]: タイプライブラリインポータ エラー
□投稿者/ はつね (879回)-(2008/11/19(Wed) 17:41:45)
はつね さんの Web サイト
No28081 (ソル さん) に返信
> VB.NET(2005)でActiveX.DLLを参照設定してリビルドしたのですが、

・ActiveX.dllは何をつかって作成しましたか(もしくはどのVBのバージョンで動作保証されていますか)?
・参照設定したActiveX.dllをプログラムではどのように使っていますか?

引用返信 編集キー/
■28115 / inTopicNo.3)  Re[2]: タイプライブラリインポータ エラー
□投稿者/ ソル (4回)-(2008/11/20(Thu) 01:27:31)
No28091 (はつね さん) に返信
> ・ActiveX.dllは何をつかって作成しましたか(もしくはどのVBのバージョンで動作保証されていますか)?

VB6.0の

Version:8176
VBA:Retail 6.0.8169
Forms3:12.0.6025.5000
です。


> ・参照設定したActiveX.dllをプログラムではどのように使っていますか?

dllは内部でクラス構造を持っており、それらをアプリからインスタンス生成したり、メンバ変数を参照したりしています。
また通信モジュールもあり、winsockを利用しています。


VS2005のCOMプロパティの設定も関係しているのでしょうか?

引用返信 編集キー/
■28126 / inTopicNo.4)  Re[3]: タイプライブラリインポータ エラー
□投稿者/ 魔界の仮面弁士 (902回)-(2008/11/20(Thu) 11:09:47)
No28115 (ソル さん) に返信
>>・ActiveX.dllは何をつかって作成しましたか(もしくはどのVBのバージョンで動作保証されていますか)?
> VB6.0の
> Version:8176
> VBA:Retail 6.0.8169
> Forms3:12.0.6025.5000
> です。

う〜む。そちらのバージョンで管理した事は無いなぁ…。(^^;
当方は、VB6/SP6 + Office 2007/SP1 + WinXP/SP3 という環境において、
 Version:9782
 VBA:Retail 6.0.9782
 Forms3:12.0.6211.1000
でした。

そこから類推するに、
 Version は C:\Windows\System32\MSVBVM60.DLL のバージョン
 VBA は C:\Program Files\Microsoft Visual Studio\VB98\VBA6.DLL のバージョン
を指しているのだと予想しますが、という事は、
 Version:8176 → MSVBVM60.DLL/ver.6.0.81.76
 VBA:Retail 6.0.8169 → VBA6.DLL/ver.6.0.0.8169
すなわち、『Visual Basic 6.0 Service Pack 未適用』に相当するのかな…?



>>・参照設定したActiveX.dllをプログラムではどのように使っていますか?
> dllは内部でクラス構造を持っており、それらをアプリからインスタンス生成したり、メンバ変数を参照したりしています。
まぁ DLL である以上、勿論そうなるでしょうね。(^^;


で。引数の型や戻り値の型として、VB 自身が持つ内部クラスを公開してはいませんか?
こちらで実験してみたところ、

'=== Class1 ===
Option Explicit
Public Function Foo() As Object
End Function

これだけを公開したライブラリを参照設定 & リビルドした所で、先の問題は置きませんが、

'=== Class1 ===
Option Explicit
Public Function Foo() As VBA.Collection
End Function

にした場合、Interop.VBA.DLL という依存ファイルが追加され、
さらに、先の _HiddenInterface 警告が発生するようになりました。
引用返信 編集キー/
■28201 / inTopicNo.5)  Re[4]: タイプライブラリインポータ エラー
□投稿者/ ソル (5回)-(2008/11/21(Fri) 01:48:08)
No28126 (魔界の仮面弁士 さん) に返信

検証して頂き、誠にありがとうございます。


> で。引数の型や戻り値の型として、VB 自身が持つ内部クラスを公開してはいませんか?

はい、その通り公開しております。DLlからアプリ(VB2005)へのRaiseEventでその引数にCollectionデータ(.NETでのVBA.Collection型)に
アクセスできるクラスをセットし渡しています。(→アプリ側でDLLのデータをしようする為)



>'=== Class1 ===
>Option Explicit
>Public Function Foo() As VBA.Collection
>End Function
>にした場合、Interop.VBA.DLL という依存ファイルが追加され、
>さらに、先の _HiddenInterface 警告が発生するようになりました。

おそらくこちらの現象とほぼ同じであると思います。

DLL内部クラスを公開する場合の注意点等あるのでしょうか?

DLLの設定か.NET Framework2.0の仕様なのか、VB2005のアクセスの仕方なのか分かっておりません。


ちなみに警告は出ていますが、アプリの動作事態にはまだ影響は出ていません。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -