会社行きたくなかったんです。

自由になりたくて会社辞めました

Visual Studio

VB6のocxをVB.netから呼び出すと「種類が一致しません。」エラーが発生

投稿日:

VB6のocxをVB.netから呼び出すと「種類が一致しません。」というエラーが発生しました。

VB6で作成したActiveX DLLに、ByRef Stringが設定されていると、VB.netから呼び出すときにエラーが発生するようです。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33920&forum=7

こちらのページを見ると、いろいろ書いてあるのですが、いまいち理解することも解決することもできず、困っていました。

スポンサーリンク

上記ページの例と同じように、以下のメソッドが、VB6で作成したActiveX DLLに作成されているとします。

Public Function ByRefMethod(ByRef str As String) As Integer
str = "バイレフ"
End Function

次のように呼び出したら、エラーが発生します。

Dim str As String
Dim rtn As Integerrtn = ByRefMethod(str)

他の状況でうまくいくかどうかわからないのですが、解決策を見つけました。
以下のようにコードを変更するだけです。

Dim str As String = ""
Dim rtn As Integerrtn = ByRefMethod(str)

strに空の文字列を初期値として設定しただけで、エラーが発生しなくなりました。
同じ状況で困っている方は、数秒で試すことができるので、一度やってみてください。

-Visual Studio

Copyright© 自由になりたくて会社辞めました , 2018 AllRights Reserved Powered by AFFINGER4.