Pass C# string to eVC DLL

D

devgrt

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");
 
P

Paul G. Tobey [eMVP]

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.
 
C

Chris Tacke, MVP

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
 
Joined
Jul 4, 2005
Messages
19
Reaction score
0
Try this:
[DllImport("MyCProcess.dll")]
public static extern int mydll([Out] StringBuilder s);
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top