Hallo,
ich habe wahrscheinlich ein etwas selteneres anliegen. Ich versuche grade über c++ eine c# dll anzusprechen. Ich versuche mit der Hilfe eines Strings eine Byte Array zu übermitteln da ich keine bessere Lösung gefunden haben eine Byte Array von C# in C++ zu benutzten. Dieses sieht wie folgt aus.
C#
[DllExport(ExportName = "ByteTest", CallingConvention = CallingConvention.StdCall)]
static public string ByteTest()
{
ByteBuffer buffer = new ByteBuffer();
buffer.WriteString("Test");
byte[] data = buffer.ToArray();
buffer.Dispose();
string datas = System.Text.Encoding.ASCII.GetString(data);
return datas;
}
C++
using CSByteTestFn = const char* (__stdcall*) ();
FByteArray UMyBlueprintFunctionLibrary::CSByteTest()
{
HMODULE mod = LoadLibraryA("UnrealTest.dll");
CSByteTestFn CSByteTest = reinterpret_cast<CSByteTestFn>(GetProcAddress(mod, "ByteTest"));
const char* test = CSByteTest();
FString Str = FString(ANSI_TO_TCHAR(test));
size_t n = strlen(test);
int size = static_cast<int>(n);
UE_LOG(LogTemp, Log, TEXT("CSharp: %s (%d)"), *Str,size);
FByteArray BA = FByteArray();
BA.Bytes = Str;
BA.Size = size;
return BA;
}
Alles anzeigen
So nun zu meinen Problem:
Ich habe mal mitschreiben lassen was für ein String bei C# aus geht und in C++ ankommt:
C# ausgehend (Variable datas)
C++ ankommend (in log Funktion)
Nun stellt sich mir die Frage was habe ich falsch gemacht ??? Oder gibt es noch eine bessere Möglichkeit eine Byte Array zu übermitteln. Ich bin Realtiv neu in Unreal bzw c++ ich habe vorher immer mit C# gearbeitet (in Untiy) doch wir haben uns entschieden auf die Unreal zu wechseln und ich möchte versuchen über solch einen Port schon bereits geschriebenen Code aus untiy teilweise zu übernehmen (Komplett eigenes MP Server System.)
Edit: Bilder bei ausgehend und ankommend hinzugefügt da es bei den Zitat nicht erkennbar war.