Page 1 of 4

DLL

PostPosted: Fri Nov 17, 2006 3:27 pm
by Maurizio
Hello Antonio

I have a cash register with Windows CE.NET 4.20
The program works very well.

Now I have to link with a DLL , I need only 3 functions
1) DLL FUNCTION RCHOpen() AS LONG PASCAL FROM "RCHOpen" LIB "RCHGlobe.dll"
2) DLL FUNCTION RCHClose() AS LONG PASCAL FROM "RCHClose" LIB "RCHGlobe.dll"

This 2 functions works and return correctly 0

3) DLL FUNCTION RCHSendData(sIn AS STRING ,sOut AS STRING) AS LONG PASCAL FROM "RCHSendData" LIB "RCHGlobe.dll"

VB.NET Code is = Public Shared Function RCHSendData(ByVal a As String, ByVal b As String) As Int32 )

I call the function

sIn := AnsiToWide("=K")
sOut := AnsiToWide(space(40))
nRet := RchSendData(sIn,sOut)


But return always an error
(I try without AnsiToWide)


Antonio , are you able to give me some clue as to solve this problem ?

Regards MAurizio





















I know that this problem could be due to the cash.
Antonio , are you able to give me some clue as to solve this problem ?

Re: DLL

PostPosted: Fri Nov 17, 2006 4:27 pm
by Enrico Maria Giordano
Maurizio wrote:3) DLL FUNCTION RCHSendData(sIn AS STRING ,sOut AS STRING) AS LONG PASCAL FROM "RCHSendData" LIB "RCHGlobe.dll"


Try AS LPSTR instead of the two AS STRING.

EMG

PostPosted: Fri Nov 17, 2006 5:21 pm
by Maurizio
Ciao Enrico

unfortunately I have already tryed .

Thank Maurizio

PostPosted: Fri Nov 17, 2006 5:29 pm
by Enrico Maria Giordano
It may be that the DLL command is not fully implemented in FWPPC yet.

Antonio?

EMG

PostPosted: Fri Nov 17, 2006 10:29 pm
by Antonio Linares
Enrico,

The DLL command is fully working.

Maurizio, what error code do you get ?

PostPosted: Sat Nov 18, 2006 8:34 am
by Maurizio
The Function RCHSendData return -104 , parameters non correctly.

Maurizio

PostPosted: Sat Nov 18, 2006 9:05 am
by Antonio Linares
Maurizio,

Have you tried to supply the parameters without calling AnsiToWide() ?

Please use LPSTR as Enrico has pointed,

PostPosted: Sat Nov 18, 2006 12:14 pm
by Maurizio
Yes I tryed without AnsiToWide() and with LPSTR
but without success

Maurizio

PostPosted: Sat Nov 18, 2006 12:49 pm
by Antonio Linares
Maurizio,

I suggest you that you try a C wrapper, without using DLL FUNCTION to see if that makes a difference.

PostPosted: Sat Nov 18, 2006 12:52 pm
by Antonio Linares
Code: Select all  Expand view
#pragma BEGINDUMP

#include <hbapi.h>

HB_FUNC( RCHSENDDATA )
{
   hb_retnl( RCHSendData( hb_parc( 1 ), hb_parc( 2 ) ) );
}

#pragma ENDDUMP

You need to link RCHGlobe.lib.

PostPosted: Sat Nov 18, 2006 1:20 pm
by Maurizio
Antonio

I Try

implib.exe RCHGlobe.lib RCHGlobe.DLL
and I have the LIB

but when I link RCHGlobe.lib i had
c:\harbour_ce\lib\RCHglobe.lib : fatal error LNK1136: invalid or corrupt file

Maurizio

PostPosted: Sat Nov 18, 2006 1:27 pm
by Enrico Maria Giordano
Did you use MSVCE implib?

EMG

PostPosted: Sat Nov 18, 2006 1:32 pm
by Maurizio
Enrico

nella cartella VCE non trovo implib.exe
ho usato quella di Borland
dove posso trovarla quella per MSVCE ?
MAurizio

PostPosted: Sat Nov 18, 2006 1:37 pm
by Enrico Maria Giordano
Usa LINK.EXE con lo switch /IMPLIB (link /? per le varie opzioni).

EMG

PostPosted: Mon Nov 20, 2006 7:19 am
by Maurizio
Antonio
cann you help me with a problem . I am not able to transform the DLL in the LIB .
Thank to Enrico's help I use this command , but it dosnt work.

c:\vce\bin\link corelibc.lib /LIBPATH:c:\vce\lib\arm /NOLOGO /SUBSYSTEM:WINDOWSCE,4.20 /MACHINE:ARM /DLL /IMPLIB:rchglobe.dll /OUT:rchglobe.lib

Regards MAurizio