Ich habe eine nicht verwaltete C++ DLL, die ich von einer Windows Mobile C# -App aufrufen muss.Übergabe einer C# Zeichenfolge an eine nicht verwaltete C DLL in Windows Mobile
Ich habe die C# -Wrapper und es funktioniert gut in Desktop. Ich kann die DLL-Funktionen von einem C# -Desktopprogramm aufrufen und Strings ohne Probleme weitergeben.
Wenn ich jedoch die Bibliothek und den Wrapper für die mobile Plattform kompilieren, erhalte ich einen Fehler in den DllImport Zeilen, die besagt, dass CharSet.ANSI nicht erkannt wird. Die einzigen Optionen, die ich schreiben darf, sind CharSet.Auto und CharSet.Unicode.
Das Problem ist, dass unabhängig von dieser Einstellung die Zeichenfolgen, die in den C++ - Funktionen empfangen werden, Wide-Zeichenfolgen und keine normalen Zeichen * Zeichenfolgen sind, was sie erwarten.
Wir wcstombs() verwenden alle Strings am Anfang jedes C++ Funktion zu übersetzen, aber ich möchte lieber nicht die lib in einem solchen Ausmaß ändern ...
Gibt es eine Möglichkeit das zu beheben Marshalling zwischen C# und C, die mit dem .NET Compact Framework funktioniert?
[Social.msdn] (http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/4aed0776-638a-4fde-ad61-e2462b39a961) sagt nein :( – GSerg