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

わんくま同盟

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

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


(過去ログ 6 を表示中)
■6632 / )  Re[3]: C# から VB6.0のDLLのメッソドを起動
□投稿者/ 魔界の仮面弁士 中尉(143回)-(2006/09/20(Wed) 15:12:32)

分類:[C#] 

2006/09/20(Wed) 15:24:14 編集(投稿者)

本当に、DLL 側がそのような実装になっているのでしょうか?

サンプルコードだからかも知れませんが、HogeMethed が ByVal ではなく
ByRef になっている理由が不明瞭に感じます。それに、LogIF で、vbErrorlog を
パブリックフィールドとして公開している理由もよくわかりませんでした。


まぁ、それはさておき。

> *LogIF.cls の中身
> *vbErrorlog.cls の中身

VB6 側で生成されたこれらのクラスと、

> public class LogIF
> public class vbError

.NET2.0 側で生成されたこれらのクラスの間には、互換性がありません。
単に、その内容が酷似しているというだけで、実際には別物です。

もしもその ActiveX DLL を参照設定しているのであれば、わざわざ LogIF/vbError の
クラスを C# 側で再定義せずとも、それらを C# 側で利用できるかと思います。
まずはそれを試してください。(VB6側の、各クラスのInstancingプロパティ次第ですが)


そしてもし、COMクラスと互換性のあるマネージクラスを再定義せねばならないのだと
すれば、それらのクラスやメンバに、元のCOMクラスとバイナリ互換性を持たせる
ために、ComVisible を始めとする幾つかの属性――場合によっては、InterfaceTypeや
Guid、DispId 等も――を、適切に指定する必要がでてくるかと思います。

0
返信 編集キー/


管理者用

- Child Tree -