Cで作成したDLL関数をVBから呼ぶ(.NET)
以前の質問に「Cで作成したDLL関数をVBから呼ぶ」(QNo.1703839)がありますが、下記のコードを見るとVB6での内容だと思います。
Dim keydata As String * 128
keydata = String$(128, Chr(0) & Chr(0))
VB.NETでVC++のDLLで変更した文字列を受けたいのですが、
どのようにすればよいのでしょうか?
VB.NET2003
<DllImport("DllTest.dll")> Private Shared Function _
Test(ByVal s1 As String) As String
End Function
Private Sub btnTest_Click(...) ...
Dim s1 As String = "abc"
Dim s2 As String
Dim s3 As String
s2 = Test(s1)
MessageBox.Show(s2) ' "1"が表示される
s3 = StrConv(s2, VbStrConv.None)
MessageBox.Show(s3) ' 同じく"1"が表示
end sub
VC++のDLL
extern "C" __declspec (dllexport) BSTR __stdcall Test(char* s1)
{
AfxMessageBox(s1); // "abc"が表示される OK
strcpy(s1, "123");
CString s2;
s2 = "123";
return s2.AllocSysString();
}
また、文字列に全角を含めても大丈夫でしょうか?
Unicodeの変換処理を行う必要があるのでしょうか?
よろしくお願いします。
お礼
ご回答をありがとうございました。 特に、具体的なプログラミングは大変ありがたいです。