FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error al cargar PCode DLL
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Error al cargar PCode DLL
Posted: Wed May 24, 2017 04:07 PM
Saludos amigos del foro.

Cambie de versi贸n de FWH1302 + xHarbour 121 6717 + Bcc58 a FWH1606 + xHarbour 1.2.3 (B.20170513) + Bcc73

Compile todo Ok.

Al ejecutarse el programa me sale el siguiente error: _hb_vmProcessSysDllSymbols

y es en la instrucci贸n: LibLoad( cPathDLL+ "Mnto.dll" )

Prob茅 tambi茅n con los ejemplos: testdllp.prg y pcodedll y sale el mismo error.


De antemano, cualquier ayuda sera bienvenida.


Saludos cordiales.

Rolando
Cochabamba, Bolivia
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error al cargar PCode DLL
Posted: Wed May 24, 2017 08:29 PM

Rolando,

> Al ejecutarse el programa me sale el siguiente error: _hb_vmProcessSysDllSymbols
> y es en la instrucci贸n: LibLoad( cPathDLL+ "Mnto.dll" )

Por favor copia aqu铆 el error completo exactamente como te aparece.

Si puedes hacer una captura de pantalla, a煤n mejor.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: Error al cargar PCode DLL
Posted: Wed May 24, 2017 10:27 PM
Antonio,

Gracias por responder.

El siguiente error aparece cuando utilizo pcodedll.dll que viene con FWH.


la segunda pantalla indica que el programa continua ejecut谩ndose (no termina).


El siguiente error aparece cuando utilizo pcodedll.dll recompilado (con maindllp.obj tb recompilado).


En este caso el programa termina despu茅s de mostrar el mensaje.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error al cargar PCode DLL
Posted: Thu May 25, 2017 05:11 AM

Despu茅s de cambiar de versi贸n de xHarbour, has reconstruido nuevamente la DLL ?

Es necesario que lo hagas

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: Error al cargar PCode DLL
Posted: Thu May 25, 2017 01:19 PM
Si, claro que si.

Primero reconstru铆 maindllp.obj y despu茅s la misma DLL que enlaza a maindllp.obj.

El problema creo que esta en maindllp.c que es donde esta la referencia a esta funci贸n.

Sin embargo en ning煤n momento de la compilaci贸n y "link" me dice que falta eta funci贸n.

Este es el codigo donde se hace referencia a esa funcion:
Code (fw): Select all Collapse
/* module symbols initialization */
PSYMBOLS hb_vmProcessSymbols( PHB_SYMB pSymbols, USHORT uiModuleSymbols, const char * szModule, 聽int iPCodeVer, PHB_ITEM * pGlobals ) /* module symbols initialization */
{
聽 聽/* notice hb_vmProcessSysDllSymbols() must be used, and not
聽 聽 * hb_vmProcessSymbols(), as some special symbols pointers
聽 聽 * adjustments are required
聽 聽 */
#if defined( __cplusplus )
聽 聽static VM_PROCESS_DLL_SYMBOLS
#else
聽 聽static VM_PROCESS_DLL_SYMBOLS pProcessSymbols = NULL;
聽 聽if( ! pProcessSymbols )
#endif
聽 聽pProcessSymbols = ( VM_PROCESS_DLL_SYMBOLS ) hb_GetProcAddress( "_hb_vmProcessSysDllSymbols" );

聽 聽HB_SYMBOL_UNUSED( pGlobals );
聽 聽return pProcessSymbols( pSymbols, uiModuleSymbols, szModule, iPCodeVer, pGlobals );
}
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error al cargar PCode DLL
Posted: Fri May 26, 2017 04:38 AM
Prueba a a帽adir este c贸digo al PRG principal de tu aplicaci贸n:
Code (fw): Select all Collapse
    #pragma BEGINDUMP

    #include "hbapi.h"

    HB_EXPORT_ATTR PHB_FUNC dll_hb_vmProcAddress( const char * szFuncName )
    {
       return hb_vmProcAddress( szFuncName );
    }

    #pragma ENDDUMP
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error al cargar PCode DLL
Posted: Fri May 26, 2017 04:46 AM

Y en samples/buildhdp.bat tienes que modificar:

echo %hdir%\lib\maindllp.obj + >> b32.bc

as铆:

echo %hdir%\lib\hbmaindllp.lib + >> b32.bc

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: Error al cargar PCode DLL
Posted: Fri May 26, 2017 07:29 PM
No funciona, continua el problema.

Estoy trabajando con los ejemplos: testdllp.prg y pcodedll.prg

a testdllp.prg le a帽ad铆 el c贸digo que me indicas y el resultado de la compilaci贸n es el siguiente:

Compiling...
xHarbour 1.2.3 Intl. (SimpLex) (Build 20170513)
Copyright 1999-2017, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'testdllp.prg' and generating preprocessed output to 'testdllp.ppo'...

Generating C source output to 'testdllp.c'...
Done.
Lines 28, Functions/Procedures 1, pCodes 42
Embarcadero C++ 7.30 for Win32 Copyright (c) 1993-2017 Embarcadero Technologies, Inc.
testdllp.c:
Warning W8065 testdllp.prg 35: Call to function 'hb_vmProcAddress' with no prototype in function dll_hb_vmProcAddress
Warning W8069 testdllp.prg 35: Nonportable pointer conversion in function dll_hb_vmProcAddress
Turbo Incremental Link 6.80 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
Error: Unresolved external '_hb_vmProcAddress' referenced from D:\FWH1606\SAMPLES\TESTDLLP.OBJ
Error: Unable to perform link* Linking errors *


no logra enlazar _hb_vmProcAddress

Por si acaso, cambie:
HB_EXPORT_ATTR PHB_FUNC dll_hb_vmProcAddress( const char * szFuncName )

por
HB_EXPORT PHB_FUNC dll_hb_vmProcAddress( const char * szFuncName )


El problema es con xHarbour.
En Harbour existe la libreria: hbmaindllp.lib, en xHarbour NO. As铆 que sigo usando maindllp.obj compilado por mi.

Al parecer _hb_vmProcAddress esta en la libreria hbvm.lib, que xHarbour no la tiene en la ultima version.
mmm... encontre hbvm.lib en un instalador de xHarbour antiguo con Bcc58
Donde consigo hbvm.lib para xharbour 1.2.3


Antonio, gracias por responder, disculpa la molestia.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Error al cargar PCode DLL
Posted: Sat May 27, 2017 05:18 AM

Localiza el c贸digo fuente de hb_vmProcAddress e implem茅ntalo en xHarbour

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: Error al cargar PCode DLL (Solucionado)
Posted: Sun May 28, 2017 02:06 AM
Bueno, el problema es que no estaba enlazado _hb_vmProcessSysDllSymbols, como muestra el mensaje de error.

Para que el ejemplo funcione (testdllp.prg) se tiene que modificar Buildx.bat

A帽adir el DEFFILE, para que quede algo asi: (la ultima linea del siguiente codigo)
Code (fw): Select all Collapse
:
set hdir=%XHDIR%
set hdirl=%hdir%\lib
set bcdir=d:\borland\bcc73
set fwh=%FWDIR%

SET DEFFILE=%XHDIR%\source\vm\BCC.DEF


Y mas abajo: (la ultima linea del siguiente codigo)
Code (fw): Select all Collapse
:
echo %bcdir%\lib\psdk\iphlpapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\shell32.lib, + >> b32.bc

echo %DEFFILE% >> b32.bc


con esto logre hacer funcionar testdllp

Espero que le sirva a alguien.

Saludos.

Rolando
Cochabamba, Bolivia.

Continue the discussion