I have an eVC DLL that I call from C#. I want to pass a C# string to the dll
and then copy that string's data into a char buffer as shown below. It
fails. Could anyone help me fix this code to what it should be. Thank you!
eVC DLL:
int mydll(LPSTR s)
{
char data[40];
strcpy(data, s);
}
C# calling the DLL:
[DllImport("MyCProcess.dll")]
public static extern int mydll(string s);
int r = mydll("teststring");
Paul G. Tobey [eMVP] - 31 Jan 2006 16:38 GMT
Fails how? C# strings, it should be clear, are always Unicode, not ASCII.
If you're counting on the string to consist of 8-bit characters, you're
wrong and it's probably showing you just the first character.
Paul T.
>I have an eVC DLL that I call from C#. I want to pass a C# string to the
>dll and then copy that string's data into a char buffer as shown below. It
[quoted text clipped - 11 lines]
> public static extern int mydll(string s);
> int r = mydll("teststring");
Chris Tacke, MVP - 31 Jan 2006 17:18 GMT
CE is unicode, so you shouldn't be using char, but instead either wchar_t or
the TCHAR macro, along with the right copy function.
-Chris
>I have an eVC DLL that I call from C#. I want to pass a C# string to the
>dll and then copy that string's data into a char buffer as shown below. It
[quoted text clipped - 11 lines]
> public static extern int mydll(string s);
> int r = mydll("teststring");