Klic c++ dll funkcij - Access violation

Win32 api funkcije.
Xmaster
Prispevkov: 75
Pridružen: 06.06.2004 17:00:01

Klic c++ dll funkcij - Access violation

OdgovorNapisal/-a Xmaster » 26.11.2013 16:00:46

Pozdravljeni,

Imam dll, ki je pisan v c-ju.

Problem oziroma vprašanje, ki ga imam je vrstica typedef void * EFT_HANDLE v C++ kodi in EFT_HANDLE parameter v funkcijah.
To bi moral biti pointer na funkcijo z parametru ali je EFT_HANDLE = pointer OK?

Pri vsakem klicu dobim eftapi.dll Access violation at address 0040537B in module

typedef void * EFT_HANDLE;
EFT_HANDLE = pointer;

V .h datotekah, so definirani tipi in funkcije tako :

Koda: Izberi vse

typedef enum EFTDeviceControlAction
{
        EFT_DCA_CR_CARD_RETRACT = 0x01,
        EFT_DCA_CR_CARD_REPOSITION = 0x02,
        EFT_DCA_CR_SHUTTER_OPEN = 0x03,
        EFT_DCA_CR_SHUTTER_CLOSE = 0x04,
        EFT_DCA_CR_CARD_EJECT = 0x05,
}

typedef enum EFT_PrintOptions {
        poPrintState = 0,
        poPrintFirst = 1,
        poPrintSubsequent = 2,
        poPrintFinal = 3,
        poPrintAbort = 9
} EFT_PrintOptions;


typedef void * EFT_HANDLE;

int EFT_CreateSession(EFT_HANDLE * h);
int EFT_DestroySession(EFT_HANDLE h);
int EFT_ReadProperty(EFT_HANDLE h, int table, int index, char * pValue, unsigned int maxLength);
int EFT_WriteProperty(EFT_HANDLE h, int table, int index, char * pValue);
...

Pretvoril sem vse tipe in funckije v naslednjo kodo :

Koda: Izberi vse

EFTDeviceControlAction = (
        EFT_DCA_CR_CARD_RETRACT = $01,
        EFT_DCA_CR_CARD_REPOSITION = $02,
        EFT_DCA_CR_SHUTTER_OPEN = $03,
        EFT_DCA_CR_SHUTTER_CLOSE = $04,
        EFT_DCA_CR_CARD_EJECT = $05,
);

EFT_PrintOptions = (
        poPrintState = 0,
        poPrintFirst = 1,
        poPrintSubsequent = 2,
        poPrintFinal = 3,
        poPrintAbort = 9
);

EFT_HANDLE = pointer;

function EFT_CreateSession(var h: EFT_HANDLE): Integer; stdcall; external 'api.dll';
function EFT_DestroySession(h: EFT_HANDLE): Integer; stdcall; external 'api.dll';
function EFT_ReadProperty(h: EFT_HANDLE; table: Integer; index: Integer; pValue: PChar; maxLength: Cardinal): Integer; stdcall; external 'api.dll';
function EFT_WriteProperty(h: EFT_HANDLE; table: Integer; index: Integer; pValue: PChar): Integer; stdcall; external 'api.dll';

Vrni se na

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 2 gostov