2008-10-09 18:20 UTC-0430 Ron Pinkas <ron/at/xharbour.com> * source/vm/maindllh.c + Added version of hb_vmProcessSymbols() which redirects to hb_vmProcessDllSymbols() /* The maindllh module is linked into harbour.dll and will therfore be used to process the self contained RTL symbols as dynamic.
Any PCODE Dll must also be linked against Harbour.dll (Harbour.lib) and will therefore link to hb_vmProcessSymbols() of harbour.lib:maindllh.obj thus processing the Dll's PCODE symbols as dynamic. */ + source/vm/maindlle.c + Added maindlle.c which uses a version of hb_vmProcessSymbols() which redirects to hb_vmProcessExeSymbols() /* The maindlle module is is now linked into dllmain.lib instead of maindllh.c DllMain.lib should be linked into EXE applications which are staticly linked to harbour.dll by means of harbour.lib. The prg modules of such EXE should use the native version of hb_vmProcessSymbols() in hvm.c but that version is masked by the maindllh module. Linking DllMain.lib (before Harbour.lib) resolves that problem, by linking to hb_vmProcessSymbols() in the maindlle module, which then redirects to the native hb_vmProcessSymbols(). This in turn processes the modules of the EXE as static symbols. Please note that in such sample, staticly linked application, UseDll.exe, the dynamic symbols (harbour.dll and optionally PrgPCode.dll) will be processed as dynamic symbols, while the application defined symbols will be processed as static, and are allowed to OVERRIDE any dynamic symbol loaded from dll (symbols from staticly linked dlls are loaded first). */ * include/hbvm.h * Updated declaration of hb_vmProcessDllSymbols() + Added declaration of hb_vmProcessExeSymbols() * source/vm/maindllp.c * Updated call to hb_vmProcessDllSymbols() * common.mak * Link maindlle.c (instead of maindllh.c) into dllmain.lib * compile.mak + Added maindlle.c * makefile.vc + Restored %CFLAGS% support to CLIBFLAGS + Added /MAP and /FORCE:MULTIPLE to DLLFLAGS * source\compiler\genc.c * Fixed support for GLOBALs in dlls. * source/vm/hvm.c + Added hb_vmProcessExeSymbols() * Refined static and dynamic symbol processing in hb_vmRegisterSymbols() * source/vm/eval.c * Exported and corrected: hb_evalBlock0() hb_evalBlock1() hb_evalBlock() to use hb_vmsend() instead of hb_vmFunction() /* These functions were not exported, and were not used anywhere in our sources. I don't believe they should push the result on the stack, please advise otherwise. */ * include/hbapiitm.h + Added declaration: extern HB_EXPORT void hb_evalBlock0( PHB_ITEM pCodeBlock ); extern HB_EXPORT void hb_evalBlock1( PHB_ITEM pCodeBlock, PHB_ITEM pParam ); extern HB_EXPORT void hb_evalBlock( PHB_ITEM pCodeBlock, ... ); * source/rtl/trace.c * MT initialization correction * source/rtl/achoice.prg * source/rtl/win32ole.prg * Corrected to not use VM internals. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ xHarbour-developers mailing list xHarbour-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xharbour-developers