Stephen Leake expounded in news:82fx2lm74h.fsf@stephe-leake.org: > Warren writes: > >> Vadim Godunko expounded in news:5867de55-7ca2-4c64-a72f-d2343153eef0 >> @k36g2000yqn.googlegroups.com: >> >>> On Apr 23, 5:44 pm, Warren wrote: >>>> >>>> For a basic interpreter, making use of ncurses, libgmp, libgsl, >>>> and PostgreSQL etc., it is unavoidable. :)  I tried to avoid C++ >>>> like the plague, but ncurses requires a C++ main, if GNAT exceptions >>>> are to work correctly. I'm not sure of the details why, but a GNAT >>>> exception + ncurses and a C or gnat main leads to an abort. >>>> Switching to a C++ main program has corrected that. >>>> >>> Did you try to pass -shared to gnatbind? >> >> No, but is that really relevant? >> >> The problem was not library linkage, but the fact that >> if an exception was raised in the Ada modules, the >> exception handler would not work -- the whole unit >> would abort. > > Lots of things are relevant in exception handling. > > First is the exception handling mechanism; set-jump/long-jump vs zero > cost. GNAT supports both, with zero cost the default; Windows dlls > require sj/lj. > > It may be that using a C++ main also implies the sj/lj mechanism. Ok, but how is that connected with "-shared"? Warren