PC Review Forums Newsgroups Microsoft DotNet Microsoft Dot NET Framework Pinvoke problem - only first character being sent.

Reply

Pinvoke problem - only first character being sent.

 
Thread Tools Rate Thread
Old 05-04-2006, 05:58 PM   #1
anirudh
Guest
 
Posts: n/a
Default Pinvoke problem - only first character being sent.


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

  Reply With Quote
Old 05-04-2006, 10:00 PM   #2
Mattias Sjögren
Guest
 
Posts: n/a
Default Re: Pinvoke problem - only first character being sent.

> [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

--
Mattias Sjögren [C# MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
Please reply only to the newsgroup.
  Reply With Quote
Reply



Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off