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.
Mattias Sj?gren - 23 Jan 2005 19:34 GMT
Dan,
>[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 );
I'm guessing that you should use int rather than long for the
parameter types. Keep in mind that a long in C# is a 64-bit integer.
Also, are you sure that the last byte array parameter should be passed
by ref?
Mattias

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