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

わんくま同盟

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

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

■93691 / 親階層)  VB6とC#間で参照渡しでやりとりする方法
□投稿者/ 凡人 (1回)-(2020/01/12(Sun) 16:38:06)

分類:[C#] 

2020/01/12(Sun) 21:15:17 編集(投稿者)

VB6で作成したActiveX DLLをC#からコールしたいです。

VB6上ではEXEアプリケーションとActiveX DLL間でコール
およびデータのやりとりは出来ています。

C#はVisual C# 2008 Express Editionを使用しています。
OSはWindows7 Professional 64bit です。

VB6 ActiveX DLLの記述(一部) ///////////////////////////////

VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "Class1"
Attribute VB_GlobalNameSpace = True
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True

Public Function DLL_CALL_TEST(ByRef bBuf() As Byte, ByVal lSize As Long) As Boolean

Dim lw As Long

'戻り値初期化
DLL_CALL_TEST = False

〜省略〜

End Function


/////////////////////////////////////////////////////////////////


このDLL_CALL_TEST()関数をC#側から参照の追加をし、コールしたいのですが、

FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);

byte[] bs = new byte[fs.Length];
fs.Read(bs, 0, bs.Length);

Array a = Array.CreateInstance(typeof(byte), fs.Length);
DLL_CALL_TEST.Class1Class call_test_dll = new DLL_CALL_TEST.Class1Class();
call_test_dll.DLL_CALL_TEST(ref a, (int)fs.Length);

fs.Close();

〜省略〜

と記述し、実行すると
COMExceptionはハンドルされませんでした。
CLSID {79342F1A-18ED-4E63-BC1B-60B9999F55E2} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80040154。

となってしまいます。
色々とネット上を調べましたが解決できていません。

どなたか、解決方法をご教授していただけないでしょうか?

よろしくお願いします。


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: VB6とC#間で参照渡しでやりとりする方法 /Hongliang
 
上記関連ツリー

VB6とC#間で参照渡しでやりとりする方法 / 凡人 (20/01/12(Sun) 16:38) #93691 ←Now
Re[1]: VB6とC#間で参照渡しでやりとりする方法 / Hongliang (20/01/12(Sun) 21:17) #93692
  └ Re[2]: VB6とC#間で参照渡しでやりとりする方法 / 凡人 (20/01/12(Sun) 21:50) #93693 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信