[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

LINKIMAGE/CALL_EXTERNAL/DLM advice




I pondered about using the word "warning" instead of "advice" 
in the subject of this post, but I wouldn't risk worrying
people too much.

The thing is, if you use linkimage/call_external/dlm (dynamically
loadable modules) for anything fancy that *might* be dependent on
values in the "export.h" file supplied with the IDL distribution, you
should always remember to *recompile* your C programs when upgrading
to a new IDL version. The thing to look out for in particular is when
you're calling libidl functions.

I got bit (somehow) by this yesterday, when I used some functions
that I (apparently) have not used since IDL v 4. It's likely that
some problem arose with the IDL_EzCall mechanism, since testing
finally showed that I got different answers from a function depending
on the type of the parameters I sent (IDL_EzCall was used to convert
all arguments to FLOAT, so this *shouldn't* happen). Recompiling
(without updating the export.h file) didn't help much, but after
updating export.h, the recompilation did help.

This is of course not a bug in any way, and I guess I should have
*known* that a recompilation of external code should always be done
with a new version, but I wish this had been pointed out somewhere...
(I'm not saying it isn't, just that I haven't seen it :-)

I spent a fair amount of time yesterday hunting down the cause for my
inexplicable results (which I *knew* were correct a while ago!) but I
haven't tracked down the exact mechanism for the failure...I found a
fix, though, and thought I should let people know.

Regards,

Stein Vidar