|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
Вот иструкция по подключению: Программный интерфейс 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. Не может найти точку входа ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 11:05 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
DMITRY_PEREDISTY, для начала попробуйте декларировать и передавать указатель/ссылку на строку, а не саму строку. DECLARE OBJECT ScBindApi IN ScApi.dll STRING s @ dll_path_name = '' x = ScBindApi(@dll_path_name) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 11:40 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
Тебе надо динамическое связывание, но оно как-то нездорово описано DMITRY_PEREDISTY Динамическое связывание В случае динамического связывания все .dll, относящиеся к библиотеке, должны находиться в одной директории. 1 способ Подлинковать статическую библиотеку ScApiBnd.lib . Нельзя в фоксе это сделать. Судя по инструкции это все для использования в С/С++ написано. #include в фоксе точно писать не надо. Какие функции есть в DLL можно посмотреть с помощью утилиты Depends (входит в состав MS Visual Studio). Скорее всего DLL просто не экспортирует ScBindApi(). Если так то писать на С свою DLL-обертку, которая будет вызывать эту библиотеку. Из фокса общаться только со своей DLL ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 11:53 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
Функции в dll точно есть и название указаны правильные, т.к. есть пример на дельфях 6 и VB Не получается вызов из Fox ни как переменная ни как @ ссылка на переменную. Всегда такое сообщение: Cannot find entry point ScInitialize in the DLL. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 12:21 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
Пример на дельфях: // Подключение 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; ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 12:26 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
DMITRY_PEREDISTYФункции в dll точно есть и название указаны правильные, т.к. есть пример на дельфях 6 и VB Давай пример на VB. Он легко на фокс должен переписаться. DMITRY_PEREDISTYВсегда такое сообщение: Cannot find entry point ScInitialize in the DLL. Это и значит что он не может найти функцию ScInitialize() в dll ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 12:30 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
Dima T, у меня нет VB открыть как текст могу высылаю файлы в архиве. Там форма пример, всего 4 файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 12:40 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
Файл form1.frm блокнотом открой. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Похоже это COM-объект. Попробуй Код: sql 1. 2. 3.
Возможно его сначала надо будет в виндовсе зарегистрировать. Запустить в командной строке Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 12:53 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
Зарегистрировать получилось, но идентификатор не находит в реестре. Class definition SCANIFYOBJECT is not found. А если попробовать регистрировать ScApi.dll то пишет что файл загружен , но он не такой как надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 13:24 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
Co ScApi.dll там есть? В исходниках VB она упоминается. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 13:28 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
есть ScObj = CreateObject('ScanifyObject') не проходит в реестре нашел такой идентификатор ScObj = CreateObject('CoScApi.ScanifyObject2.1') но не находит чей то ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 13:51 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
Теперь похоже не находится ScApi.dll. DMITRY_PEREDISTYВ случае статического связывания файл ScApi.dll и все остальные .dll библиотеки должны находиться в той же директории, что и .exe-файл программы. Т.к. EXE это Vfp9.exe, то попробуй скопировать все dll в папку фокса Еще вариант: попробуй указать путь до папки с dll (вроде как документация об этом пишет) Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 13:59 |
|
Не получается подключить DLL
|
|||
---|---|---|---|
#18+
procedure testScanify ScObj = CreateObject('CoScApi.ScanifyObject2.1') ScI = ScObj.Initialize("c:\program files\cognitive\scanifyapi\scanify\bin32\") WAIT WINDOW ScI Кажись получилось! вернула Object ПРЕМНОГО БЛАГОДАРЕН!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 14:03 |
|
|
start [/forum/topic.php?fid=41&msg=39105500&tid=1582213]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 167ms |
0 / 0 |