Ich habe eine statische Bibliothek. Diese Bibliothek hat die folgende FunktionL Präfix für Zeichenfolgen in C++
definiertint WriteData(LPTSTR s)
Die Probe um die Funktion aufzurufen ist
LPTSTR s = (LPTSTR) L"Test Data";
int n = WriteData(s);
0 bei Erfolg und -1 bei einem Fehler zurückkehren Writedata.
Ich schreibe eine dynamische DLL, um diese Funktion zu exportieren.
int TestFun(LPTSTR lpData)
{
return WriteData(lpData);
}
A C++ Testanwendung Ergebnis
LPTSTR s = (LPTSTR) L"Test Data";
TestFun(s); //OK return 0
LPTSTR s = (LPTSTR) "Test Data";
TestFun(s); //Fail return -1
Ich habe es aus C# Anwendung aufzurufen. Ich gehe davon aus meiner DLL-Import Unterschrift wäre:
[DllImport("Test.dll")]
private static extern int TestFun(String s);
Meine Frage ist sehr einfach wie kann ich es von Net nennen? Wie Sie sehen, ich habe die Kontrolle über
TestFun(LPTSTR lpData)
aber keine Kontrolle über
WriteData(LPTSTR s)
Vielen Dank allen für ihren Einsatz. Bis jetzt bin ich beim Casting fest. Ich denke, dass mein Problem gelöst werden würde, wenn ich in der Lage sein könnte, die Eingabe vom Benutzer zu nehmen und 2 Zeilen für das Casting anstelle der folgenden Zeile zu schreiben.
LPTSTR s = (LPTSTR) L"Test Data"); //<= How can ii take input from user and
TestFun(s); //OK return 0
Die Verwendung von TCHAR hat vor 10 Jahren Sinn ergeben. Nicht mehr, es gibt kein Nicht-Unicode-Betriebssystem, das Sie unterstützen müssen. Mache alles wchar_t und gehe weiter. –
Wie kann ich das tun? – Manjoor
Was funktioniert nicht, wenn Sie lpData an die WriteData-Funktion übergeben? – harper