この回答は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 コメント