Net/Link: Problem with DLL (1)
- To: mathgroup at smc.vnet.net
- Subject: [mg48855] Net/Link: Problem with DLL (1)
- From: "psa" <psa at laplacian.co.uk>
- Date: Sat, 19 Jun 2004 04:31:03 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
My C type DLL (written in Compaq Visual Fortran) returns a length 2 double array, and I cannot get all two of the results. I am confused as to when and how to supply an object in .Net/Link. I tried: In[] = TestDLL2=DefineDLLFunction["testDLL2","maths0000.dll","Void",{"Double","Doub le","Double","Double","out Double[]"}]; With what I believe is the required and it fails. In[] = res=MakeNETObject[{0.0,0.0}] «NETObject[System.Double[]]» In[] = TestDLL2 [1,2,3,4,res] NET::netexcptn: A .NET exception occurred: System.NullReferenceException: Object reference not set to an instance of an obj.espace.DLLWrapper8.testDLL2(Double , Double , Double , Double , Double[]& ). $Failed Ditto, if it is it is passed res={0.0,0.0}. By pretending it is just a scalar for output array I get the first element only (not surprisingly?) In = TestDLL2=DefineDLLFunction["testDLL2","maths0000.dll","Void",{"Double","Doub le","Double","Double","out Double"}]; In[] = TestDLL2 [1,2,3,4,res] In[] = res -0.0229672 If I am NOT doing something wrong, Is there a Windows API that returns an array so I can see it working? Thanks Peter Aptaker