Passing > 64Kb arrays to IDL DLL's [message #4088] |
Mon, 24 April 1995 00:00  |
smd
Messages: 4 Registered: April 1995
|
Junior Member |
|
|
Hi,
I use IDL v 3.6.1a on a PC. I would like to find out if one can
pass arrays larger than 64Kbytes to DLL functions using
CALL_EXTERNAL. I have been trying to pass long arrays of
size > 16384 elements, which means greater than 64K bytes;
so far I haven't been successful. FYI I have used huge
pointers to access the array elements.
I know I can do my operations within IDL itself, but I may
speed up my total execution time, if I perform some of the
processing in C. Most of it involves FOR loops over images.
If anybody has experience with writing DLL's for IDL,
please advise me.
Thanks
Sandeep Dalal
------------------------------------------------------------
Philips Laboratories
345, Scarborough Road,
Briarcliff Manor, NY 10510
Email: smd@philabs.philips.com
------------------------------------------------------------
|
|
|
Re: Passing > 64Kb arrays to IDL DLL's [message #4124 is a reply to message #4088] |
Tue, 02 May 1995 00:00  |
Gary Kushner
Messages: 5 Registered: December 1994
|
Junior Member |
|
|
Karl Krieger <kak@ipp-garching.mpg.de> wrote:
>
> smd@philabs.philips.com (Sandeep Dalal) wrote:
>
>> I use IDL v 3.6.1a on a PC. I would like to find out if one can
>> pass arrays larger than 64Kbytes to DLL functions using
>> CALL_EXTERNAL. I have been trying to pass long arrays of
>> size > 16384 elements, which means greater than 64K bytes;
>> so far I haven't been successful. FYI I have used huge
>> pointers to access the array elements.
>> ...
>> Thanks
>>
>> Sandeep Dalal
>
> I still hope that I am wrong, but as far as I know, this is not
> possible, because IDL for Windoze3.1 only supports 16bit DLLs.
> That means that you are restricted to 64kb chunks for transferring
> data (or pointers to data) under Win3.1. Inside your DLL you can
> of course allocate larger arrays.
> Apparently, the only solution at the moment is waiting for an
> IDL version which supports 32bit DLLs using Win32s (or switching
> to WinNT). If someone has a better idea, please post it!
>
> Karl Krieger
As far as I know, Karl is correct; 64kb is all you can pass through
a windows 16bit DLL.
IDL sent me a note indicating that IDL 4.0 will run under Win32s
with 16 bit Windows. Thus you can recompile your DLL for win32
and the DLL should then be able to pass >64kb chunks of data to
IDL 4.0.
When I receive my copy of IDL 4.0, I will try this out with
some of my code and post an update if I have a chance. We are
also thinking of trying out Windows NT.
Gary Kushner
University of CO.
http://casa.colorado.edu/casa/kushner
|
|
|