Retorno da Função na Dll ??

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Ale SB
Usuário Nível 3
Usuário Nível 3
Mensagens: 201
Registrado em: 20 Jul 2004 17:30
Localização: Campo Grande / MS

Retorno da Função na Dll ??

Mensagem por Ale SB »

Bom Dia Galera;

Como eu poderia pegar o retorno de uma Função em harbour na Dll ?
ex.:
Mydll.dll

Código: Selecionar todos

FUNCTION MSGPARAM()
  local cTitulo:="Msg Sem Parametros"
  MsgInfo(cTitulo)
  
return "teste de Retorno"

********************************************************************************
#pragma BEGINDUMP
  #include <windows.h>
  #include <hbvm.h>
  #include <hbapi.h>
  #include <hbapiitm.h>

  #define DllExport __declspec( dllexport )
  #define DllImport __declspec( dllimport )
  
  BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
  {
  HB_SYMBOL_UNUSED( hinstDLL );
  HB_SYMBOL_UNUSED( fdwReason );
  HB_SYMBOL_UNUSED( lpvReserved );
  switch( fdwReason )
  {
   case DLL_PROCESS_ATTACH:
    hb_vmInit( FALSE );
    break;
   case DLL_PROCESS_DETACH:
    hb_vmQuit();
    break;
  } 
  return TRUE;
  }
  //--> Forma Direta de Chamada.
  DllExport void __cdecl MSGPARAM()
  { 
	 hb_itemDoC( "MSGPARAM", 0 );
  }

//--> Chamada com HBDLLENTRY
  DllExport void __cdecl HBDLLENTRY( char * cProcName )
  {
    hb_itemDoC( cProcName, 0 );	 
  }

#pragma ENDDUMP
MyPrg.prg

Código: Selecionar todos

    //--> Teste Chamada Direta.
     hLib := hb_libLoad( "Mydll.dll" )	    
     if !Empty( hLib )
  	     hb_DynCall( { "MSGPARAM", hLib, hb_bitOr( HB_DYN_CTYPE_CHAR_PTR , HB_DYN_CALLCONV_CDECL ) } )  	    
        hb_libFree( hLib )

//--//--//
     //---> Teste Chamda com HBDLLENTRY 
     hLib := hb_libLoad( "Mydll.dll" )	    
     if !Empty( hLib )
  	     hb_DynCall( { "HBDLLENTRY", hLib, hb_bitOr( HB_DYN_CTYPE_CHAR_PTR , HB_DYN_CALLCONV_CDECL )  },"MSGPARAM" )
        hb_libFree( hLib )
@braços Ale
Imagemr]
Responder