タイトルの通り、VC++で作成されたDLLからString型の文字列を取得したいのですが上手くいきません。
MSDN等を参考に以下の様にしてみたのですが、何がいけないのでしょうか?
Private Declare Function GetString Lib "VCDLL" (ByRef strAAA As String) As Integer 'VC++で作成のDLL
<VBFixedStringAttribute(20)> Private strBBB As String '20バイトの固定長宣言
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call GetString(strBBB)
MsgBox(strBBB.ToString)
End Sub
アドバイスよろしくお願い致します。
書き忘れましたが、DLLはVC++6.0、取得するのはVB.NETです。
よろしくお願いします。
ByVal strAAA As System.String、もしくは、ByVal strAAA As System.Text.StringBuilder にしてみてください。
また、呼出前にstrAAAを初期化しておくのも忘れずに。
魔界の仮面弁士さんありがとうございます。
ByVal strAAA As System.Stringでは上手くいきませんでしたが、ByVal strAAA As System.Text.StringBuilder で上手くいきました。
ありがとうございました。
Private Declare Function GetString Lib "VCDLL" (ByVal strAAA As System.Text.StringBuilder) As Integer 'VC++で作成のDLL
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strAAA As New System.Text.StringBuilder '文字列取得領域
strAAA.Capacity = 20 '20バイト固定長を設定
Call GetString(strAAA)
MsgBox(strAAA.ToString)
End Sub
ちなみに、固定長の設定は特に必要無いようでした。