comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Problems with IDL call_external to C shared object
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Problems with IDL call_external to C shared object [message #22000] Thu, 12 October 2000 00:00
Streun Andreas is currently offline  Streun Andreas
Messages: 4
Registered: October 2000
Junior Member
Hello -

who is experienced in running IDL with C shared objects?

I'm trying to make an IDL GUI for a rather complex C batch
program. The effects are rather strange: sometimes it works
perfectly, but mostly it doesn't: suddenly on the C-side strange
and wrong number appear in calculations leading to crashes. It seems
like something is initialized or dereferenced in a wrong way.
However the behaviour is determinsitic: a small change in the IDL
program like declaring a new variable anywhere causes the crash,
after undoing the change it works well again. Maybe a memory conflict ?

The C-program alone in batch mode runs reliably. It does a lot of
mallocs but never frees any memory (because it is batch).
IDL communicates via the CALL_EXTERNAL function.
I'm rather sure that I have checked the variables on both sides of the
fence are really of same type. (However I'm a poor C-programmer...)
I'm using IDL 5.3 on a Linux system and the GNU C-compiler.

Now the questions:

- Is it possible that IDL overwrites or frees memory allocated by the C
shared object ? Is there a general way to prevent it from doing so ?

- What is the effect of the /CDECL keyword to CALL_EXTERNAL ?
I tried with and without but no success.

- Is it possible that the C program "forgets" something between
the IDL CALL_EXTERNALs ?

(important:)
- Is there an opinion whether this problem can be solved in principle
and within finite time ?!

(has nothing to do with the problem but I would like to know:)
- How can I return an array via CALL_EXTERNAL or have I always
to loop over calls returning scalars ? The EZCA library (channel
access to EPICS control system) manages to return arrays, but I
couldn't figure out how.

Thanks for any help.

Andreas



--
Dr. Andreas Streun
Paul Scherrer Institute, SLS-BD, WSLA/106
CH-5232 Villigen PSI, Switzerland
Tel/Fax: ++41 (56) 310 3688/4528
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Reading tab delimited string data
Next Topic: 3D Visualization

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Thu Oct 09 15:01:06 PDT 2025

Total time taken to generate the page: 1.12256 seconds