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)
> [email protected]
> http://lists.harbour-project.org/mailman/listinfo/harbour
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour