Проблема с компиляций примера в Microsoft VS 2005

Вопросы по работе с электронными ключами SenseLock из операционных систем с использованием различных компиляторов

Проблема с компиляций примера в Microsoft VS 2005

Сообщение igor_gap » Сб, 14 май 2016 17:23

Здравствуйте. Я создал консольное приложение win32 в Microsoft Visual Studio 2005 и согласно документации разработчика вставил код для работы с ключом из первоначального примера. При попытке компиляции выдаётся ошибка:

Compiling...
sort.cpp
.\sort.cpp(67) : error C2664: 'S4VerifyPin' : cannot convert parameter 2 from 'const char [9]' to 'BYTE *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Build log was saved at "file://c:\Documents and Settings\Admin\My Documents\Visual Studio 2005\Projects\sort\sort\Release\BuildLog.htm"
sort - 1 error(s), 0 warning(s)

Подскажите в чем может быть дело....

Полный текст исходника:

// sort.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include "sense4.h"
#include "string.h"

/*main procedure*/
void call_sense4(char *, unsigned char *, int);
void main()
{
unsigned char test[] = {4,3,8,2,9,7,1,5,0,6};
int len = sizeof(test);
int i;
call_sense4("d001", test, len);
printf("result:\n");
for (i=0;i<len;i++)
{
printf("%d ",test[i]);
}
system ("pause");
}
void call_sense4(char *fid, unsigned char *buff, int len)
{
SENSE4_CONTEXT ctx = {0};
SENSE4_CONTEXT *pctx = NULL;
unsigned long size = 0;
unsigned long ret = 0;
S4Enum(pctx, &size);
if (size == 0)
{
printf("SenseLock EL not found!\n");
return;
}
pctx = (SENSE4_CONTEXT *)malloc(size);
if (pctx == NULL)
{
printf("Not enough memory!\n");
return;
}
ret = S4Enum(pctx, &size);
if (ret != S4_SUCCESS)
{
printf("Enumerate SenseLock EL error!\n");
free(pctx);
return;
}
memcpy(&ctx, pctx, sizeof(SENSE4_CONTEXT));
free(pctx);
pctx = NULL;
ret = S4Open(&ctx);
if (ret != S4_SUCCESS)
{
printf("Open SenseLock EL failed!\n");
return;
}
ret = S4ChangeDir(&ctx, "\\");
if (ret != S4_SUCCESS)
{
printf("No root directory found!\n");
S4Close(&ctx);
return;
}
ret = S4VerifyPin(&ctx, "12345678", 8, S4_USER_PIN);
if (ret != S4_SUCCESS)
{
printf("Verify user PIN failed!\n");
S4Close(&ctx);
return;
}
ret = S4Execute(&ctx, fid, buff, len, buff, len, &size);
if (ret != S4_SUCCESS)
{
printf("Execute SenseLock EL exe failed!\n");
S4Close(&ctx);
return;
}
S4Close(&ctx);
return;
}
igor_gap
 
Сообщения: 3
Зарегистрирован: Сб, 14 май 2016 17:14

Re: Проблема с компиляций примера в Microsoft VS 2005

Сообщение igor_gap » Вс, 15 май 2016 00:06

Разобрался. Залез в заголовочный файл sense4.h

и заменил тип с BYTE на CHAR и всё заработало...

DWORD WINAPI S4VerifyPin(
IN SENSE4_CONTEXT *pS4Ctx,
IN CHAR *pbPin,
IN DWORD dwPinLen,
IN DWORD dwPinType
igor_gap
 
Сообщения: 3
Зарегистрирован: Сб, 14 май 2016 17:14


Вернуться в Использование SenseLock

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron