[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
how to pass array from dll into IDL?
- Subject: how to pass array from dll into IDL?
- From: maxschautzer(at)my-deja.com (max schautzer)
- Date: 5 Jul 2001 07:53:22 -0700
- Newsgroups: comp.lang.idl-pvwave
- Organization: http://groups.google.com/
- Xref: news.doit.wisc.edu comp.lang.idl-pvwave:25545
Hi ,
I need to pass a bytearray from the dll to IDL (5.2).
I am writing a wrapper for a framegrabber which uses the dll functions to aquire
the single frames(monochrome).
Then I try to pass the pointer address to idl, then this address seems not to work.
Here my example:
in dll:
IDL_LONG TestFunction(int argc, void* argv[])
{
IDL_LONG *answer;
BYTE b=255; //BYTE is UCHAR
BYTE *pb;
answer = (IDL_LONG *)argv[0];
pb=&b;
*answer = (IDL_LONG)pb;
return(0L); //Return zero if all okay
}
in IDL:
a=10L
err=Call_External('aquire.dll','TestFunction',a)
print,a
IDL>10415668
This address seems not to be the address for b in dll. I tested this with:
var = EXTPROC_DEREF(addr,BYTE=1)
print,var
IDL>94 not 255
-> EXTPROC_DEREF comes from http://www.rlkling.com/
So her are my questions: How can I access these different address spaces?
How can I test this address in IDL?
Is there any possibility to transfer whole arrays(frames)?
And if, how fast can I get these arrays(25ms)?
Thanks
Max