Laden...

Native DLL - String-Argument encoding C# / VB

Erstellt von Gimmick vor einem Jahr Letzter Beitrag vor einem Jahr 566 Views
G
Gimmick Themenstarter:in
154 Beiträge seit 2015
vor einem Jahr
Native DLL - String-Argument encoding C# / VB

Hallo,

ich habe hier eine Assembly, aus welcher ich eine Methode mit einem String-Argument aufrufe.

In C# nach dem Prinzip:


[DLLImport("AssemblyName.dll")]
public static extern void StartMethod(string filepath);

public void Test()
{
StartMethod(@"C:\Test\test.ini");
}

VB:


Public Declare Auto Sub StartMethod Lib "AssemblyName.dll" (ByVal filepath As String)

Public Sub Test()
StartMethod("C:\Test\test.ini")
End Sub

Beide Aufrufe werden in der DLL ausgeführt, nur bei der C# Variante kommt dann eine Meldung darüber, dass die Datei nicht gefunden wurde und der angezeigte Pfad besteht aus chinesischen Zeichen.

Wenn das in VB funktioniert, wie muss ich denn dann den string in C# umwandeln, dass er identisch zu VB übergeben wird? 🙂 Liegt das evtl. an den Escape-Symbolen (@ -> double escape = no escape), weil es ein Pfad ist?

16.807 Beiträge seit 2008
vor einem Jahr

Du deklarierst bei VB das CharSet als Auto - bei C# nicht. Weil Du es bei C# nicht deklarierst, ist es automatisch Ansi.
https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.dllimportattribute?view=net-7.0

G
Gimmick Themenstarter:in
154 Beiträge seit 2015
vor einem Jahr

👍 Danke, werde ich morgen direkt ausprobieren. 🙂