Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Problem calling function in DLL via NETLink: NET::netexcptn: A .NET exception occurred

  • To: mathgroup at smc.vnet.net
  • Subject: [mg66319] Problem calling function in DLL via NETLink: NET::netexcptn: A .NET exception occurred
  • From: Heiko Damerau <heiko.damerau.news at web.de>
  • Date: Tue, 9 May 2006 02:35:24 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Hello,

     I am trying to call a function in an ordinary C++ DLL (should be 
well tested, not my code). The DLL function I am calling is declared as

     short SyncRPC FAR PASCAL SyncRPC(const char *locName, const char 
*locProperty, const char *locCycle, short ArraySize, void *Data, long 
DataSize, short DataFormat, short DataType)

     As I do not need the full flexibility when called from Mathematica, 
it is defined as

     DLLFunctionSyncRPC = DefineDLLFunction["SyncRPC", "rpcapi32.dll", 
"short", {"char*", "char*", "char*", "short", "byte[]", "byte", "short", 
"short"}];

and finally called by

     DLLFunctionSyncRPC[elementName, property, plsLine, optArraySize, 
netManagedDataArray, 0, 1, 0];

where elementName, property, plsLine are Mathematica strings, 
optArraySize is an ordinary mathematica number (integer) and 
netManagedDataArray is a .NET object declared as

     NETNew["System.Byte[]", 17optArraySize + 1];

to get the pointer to the result. Everything works fine but sometimes I 
get strange error messages:

NET::netexcptn: A .NET exception occurred: 
System.NullReferenceException: Object reference not set to an instance 
of an object. at 
Wolfram.NETLink.DynamicDLLNamespace.DLLWrapper612.SyncRPC(String , 
String , String , Int16 , Byte[] , Byte , Int16 , Int16 )

     and my notebook is not executed as it should. Changing nothing and 
just running the Mathematica notebook a second time and the error 
disappears most of the time. The error appears especially, when I call 
the DLL function extremely often; but also with a fresh kernel the error 
normally comes after some 25 calls of the function in the DLL.

     It would be great if anyone could give me a hint what is wrong with 
my function calls, because most of the time everything works correctly.

     Thanks a lot for any information in advance.

Best regards,
Heiko


  • Prev by Date: Re: 3D surface plotting
  • Next by Date: Re: Re: Do Mathematica applications EVER get updated?
  • Previous by thread: Re: two graphics questions and one general question
  • Next by thread: Re: Problem calling function in DLL via NETLink: NET::netexcptn: A .NET exception occurred