I'm trying to implement calls to an existing C-based DLL within a C# program. It sounds straightforward enough, but any calls to the extern functions produce a NullReferenceException.
My code looks like this:
[DllImport( @"e:\jbhexe\sscam.dll", EntryPoint="BAM_calcs" )]
public static extern int bamCalcs( long settlementDate,
ref bamDescr descr, long calcToWhich, ref bamResults results,
long precisionFlag, long checkInput, ref long status,
ref byte[] statusText );
and the exception is thrown on the call:
bamCalcs( settlementDate, ref descr, calcToWhich, ref results,
precisionFlag, checkInput, ref status, ref statusText );
I'm guessing that I have to create an instance using Type.GetType(), but since the dll is C-based, I can't figure out what parameters to pass.
If someone has insight into this, your response would be appreciated.
Please contact me at danmehlman@hotmail.com.
Thank you.
Robert Jordan - 17 Oct 2004 11:24 GMT
> I'm trying to implement calls to an existing C-based DLL within a C# program. It sounds straightforward enough, but any calls to the extern functions produce a NullReferenceException.
>
[quoted text clipped - 7 lines]
>
> and the exception is thrown on the call:
The .NET "long"-type is 64 bit wide. It's very unlikely that
the arguments of your C function are "long long", so use
the type "int" instead:
public static extern int bamCalcs(int settlementDate, ...)
How did you declared "bamDescr" and "bamResults"?
bye
Rob