all groups > dotnet clr > july 2003 >
You're in the

dotnet clr

group:

Return string from Fortran Dll back to C#.


Return string from Fortran Dll back to C#. Alex Dong
7/3/2003 5:45:54 PM
dotnet clr:
Dear all:
My C# program need a string returned from a Fortran Dll.
The Fortran Dll is like this:

SUBROUTINE REDO(s)
!DEC$ ATTRIBUTES DLLEXPORT::REDO, C
CHARACTER*(*) s
!DEC$ ATTRIBUTES REFERENCE :: s
s = 'Let them talk, now!'C
END

And I use C# PInvoke to call it, the client code like this:

public class BackString
{
[DllImport(@"BackString.dll",
EntryPoint="REDO")]
public static extern void REDO(string output);
}

string output = "";
BackString.REDO(output);

When I call this, I got an NullReferenceException, can anybody here explain
why? and how could I return the string?

I also tried to return the value as "Return" but have the same problem. The
..NET Framework's PInvoke example to use C's return string works fine, but I
just can't make the Fortran work.

Thank everybody and hope I could get some reply.

Regards
Alex

Re: Return string from Fortran Dll back to C#. Vadim Melnik
7/4/2003 2:02:30 PM
Hi,

[quoted text, click to view]

StringBuilder should be used for string out arguments. How about the
following in C# ?

public static extern void REDO(StringBuilder output);

.....

StringBuilder sb = new StringBuilder(1024);
REDO(sb);
Console.WriteLine(sb);


...
Regards,
Vadim



AddThis Social Bookmark Button