VC++で作成されたDLLからString型の文字列を取得するには?

解決


初心者です  2004-05-11 08:39:28  No: 83300  IP: [192.*.*.*]

タイトルの通り、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


アドバイスよろしくお願い致します。

編集 削除
初心者です。  2004-05-11 08:41:57  No: 83301  IP: [192.*.*.*]

書き忘れましたが、DLLはVC++6.0、取得するのはVB.NETです。
よろしくお願いします。

編集 削除
魔界の仮面弁士  2004-05-11 09:58:16  No: 83302  IP: [192.*.*.*]

ByVal strAAA As System.String、もしくは、ByVal strAAA As System.Text.StringBuilder にしてみてください。
また、呼出前にstrAAAを初期化しておくのも忘れずに。

編集 削除
初心者です  2004-05-11 16:03:36  No: 83303  IP: [192.*.*.*]

魔界の仮面弁士さんありがとうございます。
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


ちなみに、固定長の設定は特に必要無いようでした。

編集 削除