From: James B. <jk...@mr...> - 2002-01-30 12:07:53
|
Hello, I've built a C Tk extension and I'm trying to load it into the native darwin wish. My library is tk_utils held in a file named libtk_utils.dylib. It has a Tk_utils_Init() function. However the load command seems to be looking for the safe-init function instead: % load libtk_utils.dylib dyld: /Applications/Wish Shell.app/Contents/MacOS/Wish Shell Undefined symbols: _Tk_utils_SafeInit [mac5031-1:src/lib/mac-binaries] jkb% Why is this? I know that this function doesn't exist - I don't want it to. However on Unix and Windows it simply ignores this. Indeed we even load libraries that have neither a _SafeInit or an _Init function simply to load in some additional C-only libraries. Any suggestions most welcome. (In the mean time I'll create a SafeInit function to keep it happy...) Cheers, James -- James Bonfield (jk...@mr...) Fax: (+44) 01223 213556 Medical Research Council - Laboratory of Molecular Biology, Hills Road, Cambridge, CB2 2QH, England. Also see Staden Package WWW site at http://www.mrc-lmb.cam.ac.uk/pubseq/ |
From: Jim I. <ji...@ap...> - 2002-01-30 18:04:10
|
James, This is a bug. It turns out that dyld will abort your program if you try to lookup a symbol, and it doesn't exist. This seems a little draconian to me, but... Fortunately, there is a way to register a "symbol not found" handler with dyld, and if you do, it will call that instead of aborting. Somebody sent me a patch for the "library not found" version of this a little while ago. I need to take a look at it and check it in. In the meantime, you will have to add the SafeInit. You really should have one anyway. Either your extension is NOT safe to load into a safe interpreter, in which case to be a good citizen you need one that returns TCL_ERROR. If it is safe, then the safe init can just call the unsafe one. Jim On Wednesday, January 30, 2002, at 04:07 AM, James Bonfield wrote: > Hello, > > I've built a C Tk extension and I'm trying to load it into the native > darwin > wish. My library is tk_utils held in a file named libtk_utils.dylib. It > has a > Tk_utils_Init() function. However the load command seems to be looking > for the > safe-init function instead: > > % load libtk_utils.dylib > dyld: /Applications/Wish Shell.app/Contents/MacOS/Wish Shell Undefined > symbols: _Tk_utils_SafeInit > [mac5031-1:src/lib/mac-binaries] jkb% > > Why is this? I know that this function doesn't exist - I don't want it > to. However on Unix and Windows it simply ignores this. Indeed we even > load > libraries that have neither a _SafeInit or an _Init function simply to > load in > some additional C-only libraries. > > Any suggestions most welcome. (In the mean time I'll create a SafeInit > function to keep it happy...) > > Cheers, > > James > > -- > James Bonfield (jk...@mr...) Fax: (+44) 01223 213556 > Medical Research Council - Laboratory of Molecular Biology, > Hills Road, Cambridge, CB2 2QH, England. > Also see Staden Package WWW site at http://www.mrc-lmb.cam.ac.uk/pubseq/ > > _______________________________________________ > Tcl-mac mailing list > Tc...@li... > https://lists.sourceforge.net/lists/listinfo/tcl-mac > -- Jim Ingham ji...@ap... Developer Tools - gdb Apple Computer |