VBで作成した値をC++で受け取ると空になる

この回答はGPT-4による自動生成回答です

VBとC++間でデータをやり取りする際には、データ型の互換性を確認する必要があります。VBのString型とC++のvector<wchar_t>型は直接互換性がありません。

以下のようにVB側とC++側の関数宣言を修正してみてください。

VB側:

VB

1Public Declare Sub Test Lib "■■■.dll" (ByVal Mojis As String)

C++側:

C++

1extern "C" {2 __declspec(dllexport) void Test(BSTR Mojis) {3 // BSTRをwstringに変換4 std::wstring ws(Mojis, SysStringLen(Mojis));5 // 以降、wsを使用して処理を行う6 }7}

ここで、VB側ではString型をそのまま渡し、C++側ではBSTR型で受け取ります。BSTRはCOM間で文字列をやり取りするためのデータ型で、VBとC++間でも使用可能です。受け取ったBSTR型のデータはstd::wstringに変換してから使用します。

コメントを投稿

0 コメント