VCからVBのDLLを参照したい – プログラミング – Home

VCからVBのDLLを参照したい
 
通知
すべてクリア

[解決済] VCからVBのDLLを参照したい


ふぁいん
 ふぁいん
(@ふぁいん)
ゲスト
結合: 18年前
投稿: 15
Topic starter  

環境
VC++6(MFC),VB6, WinXP SP3

VBで作成したDLLをVCから参照できないのですが、ご存知の方がいましたら
アドバイスをお願い致します。
ソースコードは以下のようになっておりまして、末尾に記載してありますように
参照できていません。
何か足りないのでしょうか、または、やり方が違うのでしょうか?

<VB> Project1.dll (クラス名: Class1)の中身
 
 Public Function Test_func() As String
  Test_func = abc123
 End Function

<VC>
Project1.dllをクラスウィザード->クラスの追加->タイプライブラリからインポート
すると、_Class1クラスが生成される。これを使ってVBの関数を参照する。

// ------------- project1.h -------------
 class _Class1 : public COleDispatchDriver
 {
 public:
  _Class1() {} // COleDispatchDriver デフォルト コンストラクション
  _Class1(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
  _Class1(const _Class1& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}

 public:
  CString Test_func();
 };

// ------------- project1.cpp -------------
CString _Class1::Test_func()
{
CString result;
InvokeHelper(0x60030000, DISPATCH_METHOD, VT_BSTR, (void*)&result, NULL);
return result;
}

// ------------- aaaaaDlg.cpp -------------
void aaaaaDlg::OnButton1()
{
CString bbb;
_Class1 myClass;

bbb = myClass.Test_func(); // ←bbbは"。VB側の値abc123が入らない。
}


引用未解決
トピックタグ
ふぁいん
 ふぁいん
(@ふぁいん)
ゲスト
結合: 18年前
投稿: 15
Topic starter  

自己解決できました。
お騒がせして申し訳ありませんでした。
「MFC ラッパクラス」でネット検索したらほしい情報が見つかりました。
(1週間掛かりましたが、やっと解決です。\(^o^)/

CreateDispatch がないのが原因でした。
ソースは以下の通りです。
ちなみに、COMの初期化・終了処理は他の場所で記述していましたが、
分かりやすくするため、同じ場所にしておきます。

// ------------- aaaaaDlg.cpp -------------
void aaaaaDlg::OnButton1()
{
CString bbb;
_Class1 myClass;

CoInitialize(NULL);

myClass.CreateDispatch (Project1.Class1);
bbb = myClass.Test_func();

CoUninitialize();

}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました