从DLL到Microsoft Excel VBA应用程序重新调用BSTR时出现意外的结果

我在C中写了一个VBA扩展,从我读过的VBA使用BSTR,它只是一个带长度前缀的WCHAR *。 我有一个function:

__declspec(dllexport) VB_STRING _stdcall getStr() { return SysAllocString(L"This is a string."); } 

我在VBA中使用的是:

 Private Declare Function getStr Lib "main.dll" () As String Sub do_stuff() Range("A1").value = getStr() End Sub 

但是,单元格A1将只包含“T”而不是整个string。 任何人都可以提供任何build议或告诉我哪里出错了?