Pinvoke problem - only first character being sent.

A

anirudh

Hello,

I am trying to use Pinvoke to use a Win 32 Visual C++ 6.0 dll in a .net
C# application.

This is the original function signature.


BOOL __stdcall GetXMLString(
const char* strInputFileName,
const char* strPassword,
char* strOutput,
char* strErrorMessage)


This is the signature i am using :


[DllImport("C:\\STLKit.dll", CharSet = CharSet.Ansi)]
public static extern bool GetXMLString(
[In][MarshalAs(UnmanagedType.LPTStr)]string
strInputFileName,
[In][MarshalAs(UnmanagedType.LPTStr)]string strPassword,
StringBuilder strOutput,
StringBuilder strErrorMessage);


The problem is that ONLY the first character of the string
strInputFileName is being passed to the function.
Do I need to allocate memory for the strInputFileName ?


Any response would be highly appreciated.


Thanks,
Anirudh
 
M

Mattias Sjögren

[DllImport("C:\\STLKit.dll", CharSet = CharSet.Ansi)]
public static extern bool GetXMLString(
[In][MarshalAs(UnmanagedType.LPTStr)]string
strInputFileName,
[In][MarshalAs(UnmanagedType.LPTStr)]string strPassword,

Get rid of the attributes, you don't need them and in this case the
MarshalAs is incorrect.


Mattias
 

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