Hi Przemek, Thank you.
I still can't see how exactly, but I hope we can make this process smoother in the future. For sure hbstatic is a good step, after that we can see the next. Brgds, Viktor On 2010 Feb 16, at 15:16, Przemysław Czerpak wrote: > On Tue, 16 Feb 2010, Szak�ts Viktor wrote: > > Hi, > >> I'm trying to create -hbdyn pcode .dll, but since we've decided >> to disable Harbour libs in this case, I'm getting failure: >> --- >> undefined reference to `hb_vmExecute' >> undefined reference to `hb_vmProcessSymbols' >> undefined reference to `HB_FUN_QOUT' >> --- > > And it's correct behavior. Such PCODE dll can be linked with: > > 1. harbour shared library (harbour*.dll) and in such case it's enough > to use -shared hbmk2 parameter. > > 2. hbmaindll library and in such case all external functions inside > PRG code should be declared as DYNAMIC to not create any hardcoded > references to them, i.e.: > > /*** dllcode.prg ***/ > DYNAMIC QOUT, PROCNAME > proc MY_PROC() > ? PROCNAME() + ": hello !!!" > return > init proc start > ? "INIT PROC", PROCNAME() > return > exit proc end > ? "EXIT PROC", PROCNAME() > return > > See my last message about creating DLLs and code to automatically > generate files with DYNAMIC declarations for all functions linked > with the main executable part of application. > > I haven't added 'hbstatic' library yet we were talking about so > you have to link main part of application dynamically or build > harbour with HB_DYNLIB macro or add this code: > #pragma begindump > #include "hbapi.h" > HB_EXPORT_ATTR PHB_FUNC dll_hb_vmProcAddress( const char * szFuncName ) > { > return hb_vmProcAddress( szFuncName ); > } > to one of .prg files linked with main static part of application. > > 3. with import library created for the main executable part of application > when it was linked using -implib hbmk2 switch. > To create such import library you have to compile Harbour with > HB_DYNLIB macro or if you are using MinGW then you can use > --export-all-symbols LD switch, i.e.: > hbmk2 -implib -ldflag=-Wl,--export-all-symbols ... > > You cannot link such PCODE DLL with Harbour static libraries. > Technically it's possible and you will not have any link time > errors when you add -nohblib- switch but you will create broken > binaries because your DLL and you static part of application will > use their own independent HVM implementations. > The only one situation when such DLL linked with Harbour static > libraries is usable is when programmer wants to create self contain > DLL which will be used by non Harbour applications. > >> If I add -lhbmaindllp manually, I'm stil getting >> --- >> undefined reference to `HB_FUN_QOUT' >> --- >> What am I missing? > > See above. > > best regards, > Przemek > _______________________________________________ > Harbour mailing list (attachment size limit: 40KB) > Harbour@harbour-project.org > http://lists.harbour-project.org/mailman/listinfo/harbour _______________________________________________ Harbour mailing list (attachment size limit: 40KB) Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour