Пытаюсь в C++ получить строку из DLL написанной на Delphi в виде OUT параметра функции
Все бы хорошо, но в полученной строке отсутствуют русские буквы. Вернее даже, получается так что отсекается хвост строки с первого же русского символа.
Код DLL на Delphi
library test_ws;
uses
Windows, SysUtils, Vcl.Dialogs;
function GetLastErrText_O(out str: WideString): BOOL; stdcall;
begin
str := 'This is the result of GetLastErrText_O :: zЭто результат работы GetLastErrText_O.:;';
Result := True;
end;
exports
GetLastErrText_O;
begin
end.
Код вызова этой функции из C++:
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
HMODULE lib = LoadLibrary("test_ws_o.dll");
typedef BOOL (__stdcall *Func)(BSTR &pstr);
Func GetLastErrText_O = (Func) GetProcAddress(lib, "GetLastErrText_O");
BSTR bstr;
BOOL flg;
flg = GetLastErrText_O(bstr);
std::wcout << ".a." << bstr << ".z."; // ЗДЕСЬ ВЫВОДИТ: ".a.This is the result of GetLastErrText_O :: z"
std::cout <<"\n";
SysFreeString(bstr);
return 0;
}
Если эту же DLL вызвать из программы написанной на Delphi-же, то проблем нет - русские символы не теряются.
Почему при вызове из C++ происходит отсекание?