Marhal C return "const char" * do "string"

0

Witam. Mam tu mały oto problemik.

Funkcja instancji z której chce otrzymać return

std::string	 m_stName;
const char * CInstanceBase::GetNameString()
{
	return m_stName.c_str();
}

mój delegate

[UnmanagedFunctionPointer(CallingConvention.ThisCall, SetLastError = true, CharSet = CharSet.Ansi)]
[return: MarshalAs(UnmanagedType.LPStr)]
public delegate string delegateCInstanceBaseGetNameString(IntPtr instance);

Return z funkcji działa dobrze jeśli nie zawiera znaków "żść......". Natomiast jeśli zawiera, pierwsze wywołanie zwraca poprawnie string, nastepne w stylu krzaczków na stałe uszkadzając std::string instancji.

Natomiast jak użyje return type jako IntPtr do char, z czytam byte i przekonwertuje do string działa bez zarzutu

0

Bo powinieneś mieć w takim wypadku charset unicode i wstring zamiast string

0

Niby ok ale czemu niszczy/nadpisuje stringa instancji

1 użytkowników online, w tym zalogowanych: 0, gości: 1