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

わんくま同盟

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

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


(過去ログ 104 を表示中)
■62435 / )  Re[6]: C#からVBで作成したDLLへの構造体渡し
□投稿者/ 魔界の仮面弁士 (2389回)-(2011/10/11(Tue) 09:37:48)
No62434 (コバピー さん) に返信
> VB側Functionに戻り値の定義を追加し、DLLを再作成致しました。
> Public Function xxxx(ByRef dData() as Type_Data) as Integer
その場合、DLL のバイナリ互換性が失われることになります。
http://support.microsoft.com/kb/161137/ja

アンレジストは「古いバージョンのDLL」に対して行い、その後、
「新しいバージョンのDLL」をレジストリ登録しておいてください。


> 変数aの記述を変更。
>  Array a = DTTBL; → System.Array a = DTTBL;
これは同義ですね。通常、「using System;」相当の記述があるはずなので、
Array と System.Array を global::System.Array は同じ結果となります。


> Functionの呼び出し記述を変更。
>  objVBDLL.xxxx(ref a); → short r = objVBDLL.xxxx(ref a);
これでコンパイルが通るなら、C# 側の実装に問題はありません。
(ただし、C# 側は x86 ビルドにしておいてください)


> 良さそうには見えますが実行しますと、
そのエラーを発生させているのは、.NET 側ではなく ActiveX 側だと思います。
いわゆる「実行時エラー」でしょうね。

DLL そのものの実装に問題がある可能性もありそうなので、VB6 開発環境で
デバッグ実行した状態で C# から呼び出し、問題がないかどうか確認してみてください。
返信 編集キー/


管理者用

- Child Tree -