VB.NETのActiveX DLLをVC++等で使いたい


たろやん  2006-09-27 05:07:49  No: 133419

こんにちは。初歩的な質問ですいません。
最近、VB .NETの勉強をはじめたばかりなのですが、
それでログイン画面のような入力画面を表示し、OK、NGを返す単純なActiveX Dllを作成しました。
それを他の.NETのVC++とか、C#、ASP.NETとかでも使用したいと思うのですが
そもそも使えるんでしょうか?

作成環境はWinodwsXP,2000, .NET 2003で作りました


Hongliang  URL  2006-09-27 06:58:36  No: 133420

その DLL は恐らく ActiveX DLL ではなく、アセンブリと言われる .NET の DLL です。
C# からは参照設定するだけで問題なく使えるでしょう。
C++ と言うのが Managed C++ or C++/CLI なら、C# と同じように参照するだけで使えます。ネイティブな C++ なら、COM を経由する必要があります。
ASP.NET は全く別の動き方をするので、恐らく無意味です。


たろやん  2006-09-27 22:30:07  No: 133421

Hongliangさん、ありがとうございます。
>その DLL は恐らく ActiveX DLL ではなく、アセンブリと言われる .NET の DLL です。

試しに作成したものはVB .NETの新規プロジェクトでクラスライブラリを選択して
自作クラスを作成したのですが、これがそのアセンブリと言われる .NET の DLLそのもの
なのでしょうか?
VB .NETで上記のプロジェクトで作成したDLLは.NET C++やC#で該当のDLLを指定して、
参照設定を行うだけで使えると考えてよいんですよね?

>ネイティブな C++ なら、COM を経由する必要があります。
VC 6.0のC++で使うとしたら、何か特別な処理をVB .NET側に追加する必要があるですか?
またVB 6.0ではどうなるのでしょうか?
いろいろと探したんですが、うまく探せておらず、質問ばかりですいません。


魔界の仮面弁士  2006-09-27 22:58:42  No: 133422

VB.NET 2003 で作成された DLL は、ActiveX DLL として使えますよ。
逆に、ActiveX DLL としての機能を持たせたくなければ、アセンブリに
  <Assembly: ComVisible(False)>
の属性を指定しておくことになります。

ただし、AcitveX DLL のレジストリ登録は、別途必要となります。
この作業は手動でも行えますが(regasm)、構成プロパティの設定画面で、
『COMの相互運用機能に登録』のチェックを on にしておけば、
ビルド時に自動的に登録作業を行ってくれます。

> またVB 6.0ではどうなるのでしょうか?
http://www.sev.or.jp/ijupiter/world/dc_interrop/dotnet_com_interrop.html


たろやん  2006-09-28 01:26:15  No: 133423

魔界の仮面弁士さん、ありがとうございます。
教えて頂いたページを参考にして、タイプライブラリを作成し、参照はできるようになりました。
.NETのクラスライブラリのDLLはVB6.EXEと同じ場所に置いて以下のように実行しているのですが、

***  VB 6.0 呼出し側  ****
    Dim GetNObj As DLL名.クラス名
    Dim  lRet As Long
    
    Set GetNObj = New DLL名.クラス名
  lRet = GetNObj.Test(引数1, 引数2)

*** .NETのクラス側  ****
Public Class クラス名

    <STAThread()> _
    Public Shared Function test(ByVal sInput As String, ByVal sData As String) As Long
End Class
  
が.NETで作成したクラスのメソッド呼出しで「実行時エラー:438」が出てメソッドを実行する事ができません。

.NETのクラス側の宣言が間違っているのでしょうか?


Blue  2006-09-28 02:09:11  No: 133424

>VC 6.0のC++で使うとしたら、
つい最近同じような質問に答えました。(C#で作成したDLLが対象ですが)

C#で作成したDLLをVC++6.0から呼ぶ
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200609/06090065.txt


たろやん  2006-09-29 10:32:40  No: 133425

Blueさん、ありがとうございます。
教えて頂いた方法でいろいろと勉強して試してみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加