powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не получается подключить DLL
13 сообщений из 13, страница 1 из 1
Не получается подключить DLL
    #39105315
DMITRY_PEREDISTY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот иструкция по подключению:
Программный интерфейс Scanify API обеспечивает доступ к функциям сканирования документов, предварительной обработки и распознавания документов в соответствии с задаваемой конфигурацией доступа к результатам распознавания и экспорта результатов в заданные форматы.
Общие сведения
Работа с библиотекой Scanify API включает три этапа, обеспечивающие три основные функции:
– сканирование пачки документов (прием изображений документов со сканера, чтение изображений с диска или прием DIB-образов из памяти);
– предобработка образов и распознавание документов (преобразование пачки изображений в набор распознанных документов);
– доступ из прикладной программы к результатам распознавания либо экспорт результатов в один из поддерживаемых форматов.
Состав библиотеки и подключение
Библиотека состоит из набора .dll-файлов, которые должны редистрибутироваться вместе с прикладной программой. Кроме того, для связывания библиотеки с прикладной программой, на этапе компиляции и сборки необходимы заголовочные файлы ScApi.h и ScApiBnd.h и статические библиотеки ScAli.lib и ScApiBnd.h.
Возможно динамическое и статическое связывание прикладной программы с библиотекой Scanify API.
Статическое связывание
В случае статического связывания файл ScApi.dll и все остальные .dll библиотеки должны находиться в той же директории, что и .exe-файл программы.
Включить ScApi.lib в проект MSVC или указать ScApi.lib на вкладке Link диалога Project Settings.
В текст прикладной программы включить заголовочный файл библиотеки
#include "ScApi.h"
Динамическое связывание
В случае динамического связывания все .dll, относящиеся к библиотеке, должны находиться в одной директории.
1 способ
Подлинковать статическую библиотеку ScApiBnd.lib.
Включить заголовочный файл
#include "ScApiBnd.h"
Вызвать функцию
bool ScBindApi(const char *dll_path_name);
Где dll_path_name — строка пути к ScApi.dll. Путь может быть либо абсолютным, либо относительным — относительно местоположения .exe-файла. Библиотека будет загружена, и указатели pSc… будут инициализированы функциями библиотеки.
--
Вот текст проги

#include ScApi.h
#include ScApiBnd.h
DECLARE OBJECT ScBindApi IN ScApi.dll STRING s
x = ScBindApi(NULL)
DECLARE INTEGER ScInitialize IN ScApi.dll INTEGER eng
x1=ScInitialize(null)

Вот ошибки:
Cannot find entry point ScBindApi in the DLL.
Cannot find entry point ScInitialize in the DLL.

Не может найти точку входа
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105363
DMITRY_PEREDISTY,

для начала попробуйте декларировать и передавать указатель/ссылку на строку, а не саму строку.
DECLARE OBJECT ScBindApi IN ScApi.dll STRING s @
dll_path_name = ''
x = ScBindApi(@dll_path_name)
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105377
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе надо динамическое связывание, но оно как-то нездорово описано
DMITRY_PEREDISTY Динамическое связывание
В случае динамического связывания все .dll, относящиеся к библиотеке, должны находиться в одной директории.
1 способ
Подлинковать статическую библиотеку ScApiBnd.lib .
Нельзя в фоксе это сделать.

Судя по инструкции это все для использования в С/С++ написано.
#include в фоксе точно писать не надо.

Какие функции есть в DLL можно посмотреть с помощью утилиты Depends (входит в состав MS Visual Studio).
Скорее всего DLL просто не экспортирует ScBindApi(). Если так то писать на С свою DLL-обертку, которая будет вызывать эту библиотеку. Из фокса общаться только со своей DLL
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105414
DMITRY_PEREDISTY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Функции в dll точно есть и название указаны правильные, т.к. есть пример на дельфях 6 и VB
Не получается вызов из Fox ни как переменная ни как @ ссылка на переменную.

Всегда такое сообщение: Cannot find entry point ScInitialize in the DLL.
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105423
DMITRY_PEREDISTY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример на дельфях:

// Подключение ScAPI
function TScForm.LoadScAPI(): boolean;
begin
Result := False;
hScInstance := 0;
hScPackage := 0;
Log('Подключение Scanify API...');
hScInstance := ScInitialize(nil);
if (0 = hScInstance) then begin
LogAlert(' ScInitialize() вернула нулевой хендл инстанса ScAPI!');
gboxScan.Enabled := False;
gboxRecog.Enabled := False;
exit;
end;
Log(' готово');
Result := True;
end;
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105427
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DMITRY_PEREDISTYФункции в dll точно есть и название указаны правильные, т.к. есть пример на дельфях 6 и VB
Давай пример на VB. Он легко на фокс должен переписаться.

DMITRY_PEREDISTYВсегда такое сообщение: Cannot find entry point ScInitialize in the DLL.
Это и значит что он не может найти функцию ScInitialize() в dll
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105439
DMITRY_PEREDISTY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
у меня нет VB открыть как текст могу
высылаю файлы в архиве.
Там форма пример, всего 4 файла.
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105459
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл form1.frm блокнотом открой.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim ScObj As New ScanifyObject
...
Private Sub Form_Load()
On Error GoTo OpenError
    ' 1.1 Инициализация системы Scanify API, получение инстанса системы
    Set ScI = ScObj.Initialize("")
    ' 1.2 Версия Scanify API
    Text1.Text = ScI.GetScanifyAPIVersion()
    bInit = True
    bScan = False
    Exit Sub
OpenError:
    MsgBox Err.Description, vbCritical, "Initialization failed"
    ' MsgBox "Не удалось инициализировать Scanify API.", vbCritical, "Initialization failed"
End Sub


Похоже это COM-объект.

Попробуй
Код: sql
1.
2.
3.
ScObj = CreateObject('ScanifyObject')
ScI = ScObj.Initialize("")
? ScI


Возможно его сначала надо будет в виндовсе зарегистрировать. Запустить в командной строке
Код: sql
1.
regsvr32 CoScApi.dll
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105493
DMITRY_PEREDISTY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зарегистрировать получилось, но идентификатор не находит в реестре.
Class definition SCANIFYOBJECT is not found.
А если попробовать регистрировать ScApi.dll
то пишет что файл загружен , но он не такой как надо.
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105500
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Co ScApi.dll там есть? В исходниках VB она упоминается.
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105545
DMITRY_PEREDISTY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть
ScObj = CreateObject('ScanifyObject') не проходит

в реестре нашел такой идентификатор

ScObj = CreateObject('CoScApi.ScanifyObject2.1')
но не находит чей то
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105564
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь похоже не находится ScApi.dll.
DMITRY_PEREDISTYВ случае статического связывания файл ScApi.dll и все остальные .dll библиотеки должны находиться в той же директории, что и .exe-файл программы.
Т.к. EXE это Vfp9.exe, то попробуй скопировать все dll в папку фокса

Еще вариант: попробуй указать путь до папки с dll (вроде как документация об этом пишет)
Код: sql
1.
ScI = ScObj.Initialize("c:\MyProg\Dll\")
...
Рейтинг: 0 / 0
Не получается подключить DLL
    #39105572
DMITRY_PEREDISTY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
procedure testScanify

ScObj = CreateObject('CoScApi.ScanifyObject2.1')
ScI = ScObj.Initialize("c:\program files\cognitive\scanifyapi\scanify\bin32\")
WAIT WINDOW ScI


Кажись получилось!
вернула Object

ПРЕМНОГО БЛАГОДАРЕН!!!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не получается подключить DLL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]