FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Pocket PC Imprimir
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Imprimir
Posted: Mon Nov 13, 2006 09:59 AM

Antonio: puedo enviarte los .lib a ver si tu los puedes hacer funcionar? porque de repente soy yo que no logra hacerlo funcionar, capaz que me falta hacer algo, no lo se.

Pedro Gonzalez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Imprimir
Posted: Mon Nov 13, 2006 05:49 PM

Pedro,

Env铆amelos en un ZIP, gracias

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Imprimir
Posted: Tue Nov 14, 2006 08:49 AM

enviado a tu privado.

gracias.

Pedro Gonzalez
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Imprimir
Posted: Wed Nov 15, 2006 08:43 AM
Antonio: me han enviado las nuevas librerias creadas para ARMV4, pero me sigue dando errores.

teve.c
   Creating library teve.lib and object teve.exp
teve.obj : error LNK2019: unresolved external symbol "int __cdecl Prt_TestPrint(
void)" (?Prt_TestPrint@@YAHXZ) referenced in function "void __cdecl HB_FUN_PRT_T
ESTPRINT(void)" (?HB_FUN_PRT_TESTPRINT@@YAXXZ)
teve.exe : fatal error LNK1120: 1 unresolved externals




Mi funcion:

#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>
//#include <c:\lavwin\teve\mobitron\inc\printer.h>
#include <c:\lavwin\teve\mobitron\inc\printerNET.h>

int Prt_TestPrint( void );

HB_FUNC( PRT_TESTPRINT )
{
   hb_retnl( Prt_TestPrint() );
}

#pragma ENDDUMP


y esto lo agregu茅 en buildce.bat


echo \lavwin\teve\mobitron\lib\printerNET.lib >> msvc.tmp
echo \lavwin\teve\mobitron\lib\printerAPI.lib >> msvc.tmp
Pedro Gonzalez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Imprimir
Posted: Wed Nov 15, 2006 08:59 AM

Pedro,

Haz este cambio:

extern "C" {
int Prt_TestPrint( void );
}

En la nueva versi贸n de FWPPC ya no es preciso, ya que no se compila en modo C++ (flag -TP).

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Imprimir
Posted: Wed Nov 15, 2006 10:11 AM
Antonio: supongo que tenia que dejarlo asi:
Pero sigue sin funcionar


#pragma BEGINDUMP
 
#include <hbapi.h>
#include <windows.h>
#include <c:\lavwin\teve\mobitron\inc\printer.h>
 
extern "C" {
int Prt_TestPrint( void );
}

HB_FUNC( PRT_TESTPRINT )
{
   hb_retnl( Prt_TestPrint() );
}
 
#pragma ENDDUMP



El error:

 
teve.obj : error LNK2019: unresolved external symbol Prt_TestPrint referenced in
 function "void __cdecl HB_FUN_PRT_TESTPRINT(void)" (?HB_FUN_PRT_TESTPRINT@@YAXX
Z)
Pedro Gonzalez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Imprimir
Posted: Wed Nov 15, 2006 11:56 AM
Pedro,

Si revisas la LIB por dentro, con un editor binario, ver谩s que el nombre de la funci贸n es distinto:
#pragma BEGINDUMP
 
#include <hbapi.h>
#include <windows.h>
#include <c:\lavwin\teve\mobitron\inc\printer.h>
 
extern "C" {
int PRT_TestPrint( void );
}

HB_FUNC( PRT_TESTPRINT )
{
   hb_retnl( PRT_TestPrint() );
}
 
#pragma ENDDUMP
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Imprimir
Posted: Wed Nov 15, 2006 01:06 PM
Antonio, (parece una pesadilla)

Revis茅 la lib por dentro (printerApi.lib) y lo veo escrito asi:

Prt_TestPrint



por lo cual escrib铆 el codigo asi:

#pragma BEGINDUMP
 
#include <hbapi.h>
#include <windows.h>
#include <c:\lavwin\teve\mobitron\inc\printer.h>
 
extern "C" {
int Prt_TestPrint( void );
}

HB_FUNC( PRT_TESTPRINT )
{
   hb_retnl( Prt_TestPrint() );
}
 
#pragma ENDDUMP



agregada la libreria en buildce.bat


al compilar me da este error:


teve.c
Creating library teve.lib and object teve.exp
teve.obj : error LNK2019: unresolved external symbol Prt_TestPrint referenced in
function "void __cdecl HB_FUN_PRT_TESTPRINT(void)" (?HB_FUN_PRT_TESTPRINT@@YAXX
Z)
teve.exe : fatal error LNK1120: 1 unresolved externals






P.D. Tu pudiste compilarlo y no te da errores?
Pedro Gonzalez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Imprimir
Posted: Wed Nov 15, 2006 05:54 PM
Pedro,

Tienes clases en C++ dentro de la libreria!:
class __declspec(dllexport) CPrinter  
{
public:
//	INT Prt_CheckCover(BOOL *blCover);
	INT Prt_CheckHeadTemper(BOOL *blTemper);
	INT Prt_CheckPaper(BOOL *blPaper);
	INT WriteBitmap_BelowStandard(LPCTSTR bmFile);
	INT Prt_BackFeed(int n);
	INT getSerialProperty(DCB *lpDcb);
	INT PrinterDeSelect(HANDLE prt_pHandle);
	INT Prt_PortOpen();
	INT Prt_PortRelease();
	INT Prt_PrintBarcode(char *barData, int height, int width, int barcodeSystem, int codeHRI);
	INT Prt_CheckStatus(PRT_STATUS * status);
	INT Prt_TestPrint();
                ...

Vas a tener que instanciar un objeto en C++ y usarlo desde tu aplicaci贸n.

Prueba esto:
#pragma BEGINDUMP

#include "hbapi.h"
#include "Printer.h"  // de los ficheros que te han enviado

HB_FUNC( PRT_TESTPRINT )
{
   CPrinter * printer = new CPrinter;

   printer->Prt_TestPrint();
}

#pragma ENDDUMP
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Imprimir
Posted: Wed Nov 15, 2006 06:15 PM
Antonio: ahora compila sin errores.

hago la prueba de imprimir y no imprime, supongo que porque tengo que abrir la impresora luego hacer el test y luego cerrarla, lo hago de este modo, pero tampoco funciona, alguna idea?

#pragma BEGINDUMP

#include "hbapi.h"
#include "windows.h"
#include "c:\lavwin\teve\mobitron\inc\Printer.h"

HB_FUNC( PRT_TESTPRINT )
{
   CPrinter * printer = new CPrinter;

   printer->Prt_Open();
   printer->Prt_TestPrint();
   printer->Prt_Close();
}

#pragma ENDDUMP


Que estoy haciendo mal?

Gracias
Pedro Gonzalez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Imprimir
Posted: Wed Nov 15, 2006 06:38 PM

Pedro,

Tendr谩s que revisar la documentaci贸n de ese producto y los ejemplos que proporcionan para ver como es la secuencia correcta de llamadas.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Imprimir
Posted: Thu Nov 16, 2006 08:27 AM

Antonio,

la secuencia ser铆a como est脿 escrito en el codigo que te envi猫 antes. La pregunta es: esta bien escrito lo que puse?, porque por lo que entiendo, las llamadas a open, printest y close son metodos de la clase print, es asi?

gracias

Pedro Gonzalez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Imprimir
Posted: Thu Nov 16, 2006 09:29 AM

Pedro,

S铆, tu c贸digo es correcto.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Imprimir
Posted: Thu Nov 16, 2006 09:40 AM

Antonio,

Gracias

Voy a tratar de entender entonces por cual motivo no funciona, voy a usar el beep que es mas simple para hacer las pruebas.

Pedro Gonzalez
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Imprimir
Posted: Thu Nov 16, 2006 10:34 AM
Antonio,


La clase Beep funciona :-)

***************
STATIC FUNCTION ProvaStampa()
***************
LOCAL i

FOR i := 1 TO 100
  Beep_on( 200 + i * 100, 100 )
NEXT

RETURN NIL
*
** eof ProvaStampa


#pragma BEGINDUMP

#include "hbapi.h"
#include "windows.h"
#include "c:\lavwin\teve\mobitron\inc\Printer.h"  
#include "c:\lavwin\teve\mobitron\inc\Beep.h"  

HB_FUNC( PRT_TESTPRINT )
{
   CPrinter * printer = new CPrinter;

   printer->Prt_Open();
   printer->Prt_TestPrint();
   //printer->Prt_Close();
}


HB_FUNC( BEEP_ON )
{
   CBeep * Beep = new CBeep;

   Beep->Beep_On( hb_parni(1), hb_parni(2));

}

#pragma ENDDUMP





Ahora voy a tratar de entender por que no funciona la impresora.
Te agradezco muchisimo tu ayuda para resolver mi problema.
Ahora, a aprender un poco de C++....
Pedro Gonzalez