Amigso tengo un funcion por ejemplo
Func sumar( a , b )
retu(a+b)
Como hago para pasar esa funcion a un dll
y luego como invoco ese dll desde otro ejecutable
sera algo como
DLL function sumar( a , b )
Ahora esto es mas rapido que hacer en un ejecutable y pasarle
parametros con .
Gracias por la ayuda
la necesida de crear una dll
Como creo una dll con mi codigo y como lo uso con otros exes
-
- Posts: 225
- Joined: Tue Feb 28, 2006 4:25 pm
- Location: PERU
Como creo una dll con mi codigo y como lo uso con otros exes
ME INTERESA FW Y XHB POR SER OPEN SOURCE
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Como creo una dll con mi codigo y como lo uso con otros exes
Vladimir,
Puedes crear dos tipos de DLL:
1: Solo contiene pcode y usa la "maquina virtual" de Harbour contenida en el EXE.
2: Es una DLL autocontenida que puede usarse desde cualquier EXE, escrito en cualquier lenguaje.
Cual de esas dos opciones te interesa ?
Existe una tercera opcion que es usar un EXE que solo contiene pcode y usa la "maquina virtual" que esta dentro de una DLL. Son EXEs muy pequenos, ya que solo contienen pcode.
Puedes crear dos tipos de DLL:
1: Solo contiene pcode y usa la "maquina virtual" de Harbour contenida en el EXE.
2: Es una DLL autocontenida que puede usarse desde cualquier EXE, escrito en cualquier lenguaje.
Cual de esas dos opciones te interesa ?
Existe una tercera opcion que es usar un EXE que solo contiene pcode y usa la "maquina virtual" que esta dentro de una DLL. Son EXEs muy pequenos, ya que solo contienen pcode.
-
- Posts: 225
- Joined: Tue Feb 28, 2006 4:25 pm
- Location: PERU
Re: Como creo una dll con mi codigo y como lo uso con otros exes
Gracias por contestar
Esta seria la opcion que me interesa.
2: Es una DLL autocontenida que puede usarse desde cualquier EXE, escrito en cualquier lenguaje.
Muchas Gracias
Esta seria la opcion que me interesa.
2: Es una DLL autocontenida que puede usarse desde cualquier EXE, escrito en cualquier lenguaje.
Muchas Gracias
ME INTERESA FW Y XHB POR SER OPEN SOURCE
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Como creo una dll con mi codigo y como lo uso con otros exes
Vladimir,
La opción 2 la hemos comentado recientemente a fondo en:
http://forums.fivetechsupport.com/viewt ... =3&t=14863
Revisa FWH\samples\babu.prg y babudll.prg
La opción 2 la hemos comentado recientemente a fondo en:
http://forums.fivetechsupport.com/viewt ... =3&t=14863
Revisa FWH\samples\babu.prg y babudll.prg
Re: Como creo una dll con mi codigo y como lo uso con otros exes
Buenas Antonio y resto
Disculpen responder a un tema tan viejo pero estoy buscando información sobre el punto 1 y no la localizo:
1: Solo contiene pcode y usa la "maquina virtual" de Harbour contenida en el EXE.
Encontre el tema: http://fivetechsupport.com/forums/viewt ... 4&start=15 pero guao al parecer hay que programar practicamente en C y no es lo que busco.
Mi idea es tener funciones en DLL que van a ejecutarse unicamete con mi EXE. Esas funciones deben poder llamar otras funciones que estan en el EXE, o sea, que el codigo de la DLL se comporte como si fuese parte del mismo EXE
Gracias de antemano por su tiempo.
Disculpen responder a un tema tan viejo pero estoy buscando información sobre el punto 1 y no la localizo:
1: Solo contiene pcode y usa la "maquina virtual" de Harbour contenida en el EXE.
Encontre el tema: http://fivetechsupport.com/forums/viewt ... 4&start=15 pero guao al parecer hay que programar practicamente en C y no es lo que busco.
Mi idea es tener funciones en DLL que van a ejecutarse unicamete con mi EXE. Esas funciones deben poder llamar otras funciones que estan en el EXE, o sea, que el codigo de la DLL se comporte como si fuese parte del mismo EXE
Gracias de antemano por su tiempo.
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Como creo una dll con mi codigo y como lo uso con otros exes
hidroxid.
Todo esto lo tome de samples hace algunos meses y estuve jugando un poco. Espero te sea de alguna utilidad.
Todo esto lo tome de samples hace algunos meses y estuve jugando un poco. Espero te sea de alguna utilidad.
Code: Select all
// Build a DLL from this code using: buildhd.bat mydll
// Please review TESTMYDL.prg to see how to use this DLL.
//----------------------------------------------------------------------------//
function Main()
MsgInfo( "Inside DLL main()" )
return nil
//----------------------------------------------------------------------------//
function OneParam( x )
MsgInfo( x )
return nil
//----------------------------------------------------------------------------//
function OtraMas( x )
local cTxt := x+" (un texto recibido mas uno agregado)"
MsgStop( cTxt )
return nil
//----------------------------------------------------------------------------//
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
#include <hbapiitm.h>
__declspec( dllexport ) LONG pascal DOPROC( char * cProcName, char * cParam )
{
PHB_ITEM pItem = hb_itemPutC( NULL, cParam );
if( cProcName )
{
hb_itemDoC( cProcName, 1, ( PHB_ITEM ) pItem, 0 );
hb_itemRelease( pItem );
}
else
MessageBox( 0, "inside the DLL", "DOPROC", 0 );
return 0;
}
#pragma ENDDUMP
Code: Select all
// Calling a Harbour DLL
// Please review samples\MyDLL.prg and build it before
#include "FiveWin.ch"
function Main()
local cString := "Hola a todo el mundo!"
local c1 := "Primer texto"
DOPROC( "ONEPARAM", cString )
DOPROC( "OTRAMAS", c1 )
MsgInfo( "Todo correcto, hasta el momento." )
return nil
DLL FUNCTION DOPROC( cProc AS LPSTR, cText AS LPSTR ) AS LONG PASCAL LIB "MYDLL.dll"
Code: Select all
@ECHO OFF
CLS
ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO ³ FiveWin for xHarbour 12.04 - Apr. 2012 xHarbour development power ³Ü
ECHO ³ (c) FiveTech, 1993-2012 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7 ³Û
ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ECHO ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
if A%1 == A GOTO :SINTAX
if NOT EXIST %1.prg GOTO :NOEXIST
ECHO Compiling...
if "%FWDIR%" == "" set FWDIR=C:\FWH1204\
if "%XHDIR%" == "" set XHDIR=c:\xharbour_BCC582_20120330
rem if "%2" == "/b" set GT=gtwin
rem if not "%2" == "/b" set GT=gtgui
set GT=gtgui
set hdir=%XHDIR%
set hdirl=%hdir%\lib
set bcdir=c:\bcc582
set fwh=%FWDIR%
%hdir%\bin\harbour %1 /n /i%fwh%\include;%hdir%\include /w /p %2 %3 > comp.log
IF ERRORLEVEL 1 GOTO COMPILEERRORS
@type comp.log
echo -O2 -e%1.exe -I%hdir%\include -I%bcdir%\include %1.c > b32.bc
%bcdir%\bin\bcc32 -M -c -v @b32.bc
:ENDCOMPILE
IF EXIST %1.rc %bcdir%\bin\brc32 -r -I%bcdir%\include %1
echo %bcdir%\lib\c0w32.obj + > b32.bc
echo %1.obj, + >> b32.bc
echo %1.exe, + >> b32.bc
echo %1.map, + >> b32.bc
echo %fwh%\lib\Fivehx.lib %fwh%\lib\FiveHC.lib + >> b32.bc
echo %hdirl%\rtl.lib + >> b32.bc
echo %hdirl%\vm.lib + >> b32.bc
echo %hdirl%\%GT%.lib + >> b32.bc
echo %hdirl%\lang.lib + >> b32.bc
echo %hdirl%\macro.lib + >> b32.bc
echo %hdirl%\rdd.lib + >> b32.bc
echo %hdirl%\dbfntx.lib + >> b32.bc
echo %hdirl%\dbfcdx.lib + >> b32.bc
echo %hdirl%\dbffpt.lib + >> b32.bc
echo %hdirl%\hbsix.lib + >> b32.bc
echo %hdirl%\debug.lib + >> b32.bc
echo %hdirl%\common.lib + >> b32.bc
echo %hdirl%\pp.lib + >> b32.bc
echo %hdirl%\pcrepos.lib + >> b32.bc
echo %hdirl%\ct.lib + >> b32.bc
echo %hdirl%\zlib.lib + >> b32.bc
echo %hdirl%\hbzip.lib + >> b32.bc
echo %hdirl%\png.lib + >> b32.bc
rem Uncomment these two lines to use Advantage RDD
rem echo %hdir%\lib\rddads.lib + >> b32.bc
rem echo %hdir%\lib\Ace32.lib + >> b32.bc
echo %bcdir%\lib\cw32.lib + >> b32.bc
echo %bcdir%\lib\import32.lib + >> b32.bc
echo %bcdir%\lib\uuid.lib + >> b32.bc
echo %bcdir%\lib\psdk\odbc32.lib + >> b32.bc
echo %bcdir%\lib\psdk\rasapi32.lib + >> b32.bc
echo %bcdir%\lib\psdk\nddeapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\msimg32.lib + >> b32.bc
echo %bcdir%\lib\psdk\psapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\gdiplus.lib + >> b32.bc
echo %bcdir%\lib\psdk\iphlpapi.lib, >> b32.bc
IF EXIST %1.res echo %1.res >> b32.bc
rem uncomment this line to use the debugger and comment the following one
if %GT% == gtwin %bcdir%\bin\ilink32 -Gn -Tpe -s -v @b32.bc
IF ERRORLEVEL 1 GOTO LINKERROR
if %GT% == gtgui %bcdir%\bin\ilink32 -Gn -aa -Tpe -s -v @b32.bc
IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * Application successfully built *
%1
GOTO EXIT
ECHO
rem delete temporary files
@del %1.c
:COMPILEERRORS
@type comp.log
ECHO * Compile errors *
GOTO EXIT
:LINKERROR
ECHO * Linking errors *
GOTO EXIT
:SINTAX
ECHO SYNTAX: Build [Program] {-- No especifiques la extensi¢n PRG
ECHO {-- Don't specify .PRG extension
GOTO EXIT
:NOEXIST
ECHO The specified PRG %1 does not exist
:EXIT
PAUSE
Code: Select all
@ECHO OFF
CLS
ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO ³ FiveWin for xHarbour 11.09 - Sep. 2012 xHarbour development power ³Ü
ECHO ³ (c) FiveTech, 1993-2012 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7 ³Û
ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ECHO ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
if A%1 == A GOTO :SINTAX
if NOT EXIST %1.prg GOTO :NOEXIST
ECHO Building self contained DLL
ECHO Compiling...
if "%FWDIR%" == "" set FWDIR=c:\fwh1204\
if "%XHDIR%" == "" set XHDIR=c:\xharbour_bcc582_20120330
rem if "%2" == "/b" set GT=gtwin
rem if not "%2" == "/b" set GT=gtgui
set GT=gtgui
set hdir=%XHDIR%
set hdirl=%hdir%\lib
set bcdir=c:\bcc582
set fwh=%FWDIR%
%hdir%\bin\harbour %1 /n /i%fwh%\include;%hdir%\include /w /p %2 %3 > comp.log
IF ERRORLEVEL 1 GOTO COMPILEERRORS
@type comp.log
echo -O2 -e%1.exe -I%hdir%\include -I%bcdir%\include %1.c > b32.bc
%bcdir%\bin\bcc32 -M -c -v @b32.bc
:ENDCOMPILE
IF EXIST %1.rc %bcdir%\bin\brc32 -r -I%bcdir%\include %1
echo %bcdir%\lib\c0d32.obj + > b32.bc
echo %1.obj, + >> b32.bc
echo %1.dll, + >> b32.bc
echo %1.map, + >> b32.bc
echo %fwh%\lib\Fivehx.lib %fwh%\lib\FiveHC.lib + >> b32.bc
echo %hdirl%\rtl.lib + >> b32.bc
echo %hdirl%\vm.lib + >> b32.bc
echo %hdirl%\%GT%.lib + >> b32.bc
echo %hdirl%\lang.lib + >> b32.bc
echo %hdirl%\macro.lib + >> b32.bc
echo %hdirl%\rdd.lib + >> b32.bc
echo %hdirl%\dbfntx.lib + >> b32.bc
echo %hdirl%\dbfcdx.lib + >> b32.bc
echo %hdirl%\dbffpt.lib + >> b32.bc
echo %hdirl%\hbsix.lib + >> b32.bc
echo %hdirl%\debug.lib + >> b32.bc
echo %hdirl%\common.lib + >> b32.bc
echo %hdirl%\pp.lib + >> b32.bc
echo %hdirl%\pcrepos.lib + >> b32.bc
echo %hdirl%\ct.lib + >> b32.bc
echo %hdirl%\zlib.lib + >> b32.bc
echo %hdirl%\hbzip.lib + >> b32.bc
rem Uncomment these two lines to use Advantage RDD
rem echo %hdir%\lib\rddads.lib + >> b32.bc
rem echo %hdir%\lib\Ace32.lib + >> b32.bc
echo %bcdir%\lib\cw32.lib + >> b32.bc
echo %bcdir%\lib\import32.lib + >> b32.bc
echo %bcdir%\lib\uuid.lib + >> b32.bc
echo %bcdir%\lib\psdk\odbc32.lib + >> b32.bc
echo %bcdir%\lib\psdk\rasapi32.lib + >> b32.bc
echo %bcdir%\lib\psdk\nddeapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\msimg32.lib + >> b32.bc
echo %bcdir%\lib\psdk\psapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\gdiplus.lib + >> b32.bc
echo %bcdir%\lib\psdk\iphlpapi.lib, >> b32.bc
IF EXIST %1.res echo %1.res >> b32.bc
if %GT% == gtgui %bcdir%\bin\ilink32 -Gn -Tpd -s -v @b32.bc
IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * DLL successfully built *
GOTO EXIT
ECHO
rem delete temporary files
@del %1.c
:COMPILEERRORS
@type comp.log
ECHO * Compile errors *
GOTO EXIT
:LINKERROR
ECHO * Linking errors *
GOTO EXIT
:SINTAX
ECHO SYNTAX: Build [Program] {-- No especifiques la extensi¢n PRG
ECHO {-- Don't specify .PRG extension
GOTO EXIT
:NOEXIST
ECHO The specified PRG %1 does not exist
:EXIT
PAUSE
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql