Я пытаюсь использовать эту функцию в своем коде, чтобы выполнить поиск среди всех других моих сохраненных отпечатков, чтобы узнать, проверял ли сотрудник свой вход или выход, но все еще получал ошибку сегментации каждый раз, когда я вызываю эту функцию и программа закрывается, она просит меня положить палец, и после завершения сканирования происходит сбой. Я делаю все это в программе gtk + -2.0 C ++.
И это страница API, которую я пытаюсь использовать https://fprint.freedesktop.org/libfprint-stable/
Я уже пытался вызвать эту функцию из C
это часть кода, в которой я пытаюсь идентифицировать отпечаток пальца edlg_enroll_data после запуска процесса регистрации, и устройство в fpdev уже включено
так я объявил свои переменные
struct fp_dev *fpdev = NULL;
static struct fp_print_data *edlg_enroll_data = NULL;
так я инициализировал устройство
static gboolean enable_device()
{
struct fp_dscv_dev **discovered_devs;
discovered_devs = fp_discover_devs();
if (!discovered_devs)
return FALSE;
g_assert(discovered_devs);
if (discovered_devs[0]){
fpdev = fp_dev_open(discovered_devs[0]);
fp_dscv_devs_free(discovered_devs);
return TRUE;
}
return FALSE;
}
и вот как я инициализирую edlg_enroll_data
static void edlg_run_enroll_stage()
{
int r;
int passed = 0;
struct fp_img *img = NULL;
gchar *tmp;
while (gtk_events_pending())
gtk_main_iteration();
r = fp_enroll_finger_img(fpdev, &edlg_enroll_data, &img);
if (r < 0) {
return;
}
то же устройство и те же данные fp_print_data работают правильно в других функциях
struct fp_print_data **gallery;
gallery = (fp_print_data**)malloc(sizeof(*gallery) * (2));
gallery[0]=edlg_enroll_data;
gallery[1]=NULL;
size_t *size = 0;
return fp_identify_finger(fpdev, gallery, size);
and can't get past that identify function
Я ожидал, что функция возвратит Int (например, 1) и сохранит положение отпечатка пальца, которое соответствует предоставленной мной галерее. Единственное, что я думаю, это то, как я инициализирую галерею.