• ベストアンサー

VC++6.0で作成したクラスをVB6.0で使うには?

初めて投稿します。 プログラミング初心者の為、初歩的な質問になるかもしれませんがご容赦下さい。普段、主にVisual Basic6.0(以下VB6.0)でプログラミングを行なっています。 VB6.0には演算子のオーバーロードする機能がない(?)ため、Visual C++6.0(以下VC++6.0)でプログラミングを行い、VC++6.0で作成したクラスをVB6.0で呼び出して使用したいと考えています。 インターネット上でいろいろと調べてみたのですが、その方法がわからず投稿させていただきました。VC++6.0で作成したDLLの中の関数をVB6.0で呼び出して使用する方法はわかったのですが、クラスということになると、DLLでは無理なのでしょうか? どなたか、VC++6.0で作成したクラスをVB6.0で呼び出す方法、または勉強方法(教材)などを教えていただけると助かります。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

 こんばんは。  純粋なC++では無理ですが、要はCOM/OLE/ActiveX等、そっち系で作成すれば可能です。  但し、operator += ()等の様なオーバーロード演算子は不可能です。  COMを1から実装するのは、顔が歪む程大変な事なので、MFCやATLを使用した方が効果的です。  ATLの使用方法と実装については、以下が参考になります。  http://www.koutou-software.co.jp/junk/use-atl-mystruct.html  自身で検索する際には  「COM OLE ActiveX ATL IDL バイナリインターフェース」等のキーワードを使うと見つかり易いでしょう。  後、私の所有しているCOMの書籍によれば、「GUID」を作成する際、オフライン状態で作成すると、世界全国の誰かが作成した「GUID」と衝突を起こす可能性があると書いてありました。  恐らく、ATL等のウィザードでコードを自動作成している時、一緒に作成される「GUID」にも、同じ事が言えるかもしれません(多分その筈)。  取り敢えず、オンライン状態で着手される事を、強くお勧めします。

yoshi0104
質問者

お礼

いろいろとご丁寧にありがとうございます。 大変参考になりました。上記を参考に勉強してみます。 ありがとうございました。

その他の回答 (1)

回答No.1

>VC++6.0で作成したクラスをVB6.0で呼び出す方法 は、ありません。 他言語で書かれたコードは「ダイナミックリンクで(つまりDLLで)関数として呼び出す」以外に、呼び出す方法はありません。 関数としてしか呼べないのですから「演算子のオーバーロードがどうのこうの」とか言う以前の問題です。 なので「DLL関数として呼び出すのが嫌なら、VBで動くように、演算子のオーバーロードは出来ないから演算子は使わない方向で、クラスを丸ごとVBに移植する」しかありません。

yoshi0104
質問者

お礼

ご回答ありがとうございます。 やはりクラスはDLLでは呼び出せないのですね。 演算子のオーバーロードをしない方向でも考えてみます。 アドバイスありがとうございました。

関連するQ&A