On-line: Andrey, Haz, SergKis, гостей 1. Всего: 4 [подробнее..]
АвторСообщение





Пост N: 186
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 18.10.18 18:48. Заголовок: помогите подключить библиотеку DLL


Имеется библиотека COM объекта DLL
Есть примеры подключения и инициализации в C# и С, в этих языках ничего не понимаю.
Библиотека вроде подгружается через hb_libload()
А как инициализировать объект из библиотеки ?
вот из примера C:

 цитата:

#import "CEBPayment.dll"
CEBPayment::ICEBPaymentPluginPtr plugin;

*******
CEBPayment::ICEBPaymentPluginPtr plugin(L"CEBPayment.CEBPaymentPlugin");
plugin->config();



как я понимаю создается объект plugin в котором есть набор свойств и методов
Как его создать и использовать под Harbor ?

Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет [см. все]


постоянный участник




Пост N: 6074
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.10.18 19:39. Заголовок: Я делал/разбирался д..


Я делал/разбирался для МиниГуи использование чужих DLL, но СОМ объекты не разбирал.
Посмотри там для Харбора есть пример загрузки DLL и использование функций C++
Может пригодиться.
Проект - https://cloud.mail.ru/public/JWHz/xCvn6Jycy

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6949
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.10.18 21:23. Заголовок: MIKHAIL пишет: #imp..


MIKHAIL пишет:

 цитата:
#import "CEBPayment.dll"
CEBPayment::ICEBPaymentPluginPtr plugin;

*******
CEBPayment::ICEBPaymentPluginPtr plugin(L"CEBPayment.CEBPaymentPlugin");
plugin->config();


Откуда эта инфа ?

PS
Гугл молчит на запрос "CEBPayment.dll"

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 187
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 19.10.18 06:54. Заголовок: Dima пишет: Гугл мол..


Dima пишет:
 цитата:
Гугл молчит на запрос "CEBPayment.dll"


Это библиотека для работы с платежным терминалом (эквайринг) Кредит Европа Банк. Разработчик не афиширует ее, поставляет на платной основе.
Текст взят из примера на С.
Инициализация объекта на C# выглядит так: CEBPayment.CEBPaymentPlugin plugin = new CEBPayment.CEBPaymentPlugin();
Andrey пишет:
 цитата:
Посмотри там для Харбора есть пример загрузки DLL и использование функций C++


Пример посмотрел, получается нужно вернуть из библиотеки значение объект, какой тип для этого использовать в calldll() ? И как потом работать с этим объектом, как обычно или через calldll() ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 355
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 19.10.18 08:17. Заголовок: Для формирования кар..


Для формирования картинки QR кода использую внешнюю DLL, описание параметров функции брал из мануала. Авось подход поможет?

 
/*
Генерация QR кода по переданному тексту и маршруту вывода в файл *.bmp
До вызова на ПК должна быть установлена библиотека QRCodelib и доступен
для вызова DLL файл библиотеки

Параметры:
cText Преобразуемый в QR Code текст
cPath Маршрут вывода картиник кода
cBmp Имя файла картинки
Возвращает: Имя файла картинки с маршрутом
*/
FUNC cQRGen(cText,cPath,cBmp)
STAT qrDLL
LOCA cFile:="", nResp:=0

#Define DC_CALL_STD 0x0020
DEFAULT cPath TO "", cBmp TO "QR.BMP", cText TO "http://check.egais.ru?id=UUID&dt=0404161630&cn=Common_Name"
cFile := cPath+cBmp

IF !File("QRCodelib.Dll") THEN RETU ""

qrDLL := LoadLibrary("QRCodelib.Dll" ) // Подгружается библиотека из DLL файла
nResp := DllCall(qrDLL,DC_CALL_STD,"FastQRCode",cText,cFile) // Формирование и вывод в файл
FreeLibrary(qrDLL) // Освобождение из памяти ресурсов занятых библой
RETU (cFile)


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1084
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 19.10.18 09:11. Заголовок: Поскольку речь идет ..


Поскольку речь идет о Com-объекте, надо, наверное, использовать не подключение dll, а OLE-механизм, что-то вроде:

  obj := win_OleCreateObject( "CEBPayment.CEBPaymentPlugin" ) 
obj:config()


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3808
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.10.18 09:13. Заголовок: MIKHAIL пишет: Имее..


MIKHAIL пишет:

 цитата:
Имеется библиотека COM объекта DLL



Так может там есть COM интерфейс, и ничего подключать и не надо ?

PS практически одновременно выстрелили

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 188
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 19.10.18 09:44. Заголовок: alkresin пишет: obj..


alkresin пишет:

 цитата:
obj := win_OleCreateObject( "CEBPayment.CEBPaymentPlugin" )
obj:config()


Это я попробовал с самого начала, возвращает пустой результат.
Уже пробовал вставлять куски программы на С через #pragma, но так как не смыслю в С, выдает ошибки которые не знаю как исправить

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3809
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.10.18 10:53. Заголовок: Может эту dll надо з..


Может эту dll надо зарегистрировать ?
Что-то вроде

regsvr32 CEBPayment.dll

В доке что-то есть по этому поводу ? Как использовать эту dll, и что это вообще такое ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 189
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 19.10.18 11:28. Заголовок: Pasha пишет: Может ..


Pasha пишет:

 цитата:
Может эту dll надо зарегистрировать ?


Да, есть инсталяшка, регистрирует dll
Что это такое уже написал выше. По идее, при инициализации должны получить объект и работать с ним как обычно.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1085
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 19.10.18 12:23. Заголовок: Может, правильное им..


Может, правильное имя этого COM-объекта не "CEBPayment.CEBPaymentPlugin", а как-то по другому.
Попробуйте посмотреть список всех зарегистированных COM-объектов в системе - есть специальные утилиты, ActiveXHelper, например.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6950
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.10.18 12:34. Заголовок: MIKHAIL Доку скинь ..


MIKHAIL
Доку скинь сюда

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 190
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 19.10.18 13:04. Заголовок: Dima пишет: Доку ск..


Dima пишет:

 цитата:
Доку скинь сюда

дока + демоверсия

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6951
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.10.18 13:13. Заголовок: MIKHAIL Так в пукте..


MIKHAIL
Так в пукте 2 все ж изложено и надо пробовать

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 191
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 19.10.18 13:13. Заголовок: Прислали тест на C#,..


Прислали тест на C#, у меня запускается, значит библиотека рабочая

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 192
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 19.10.18 13:16. Заголовок: Dima естественно я ..


Dima естественно я это все проделывал, об этом писал выше... у меня не получается создать объект в программе

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6952
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.10.18 14:35. Заголовок: Поигрался и тоже нич..


Поигрался и тоже ничего не вышло.
Объект создать не получилось.
Если играться как с DLL , то сама DLL грузится нормально и хэндл
возвращает.
А вот вызвать из нее config не получилось

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 193
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 19.10.18 16:52. Заголовок: информация от разраб..


информация от разработчика:

 цитата:
В С++ подключается так:

#import "CEBPayment.dll" - здесь путь до библиотеки, отсюда компилятор импортирует методы.
Это нужно один раз для компиляции. Использоваться будет библиотека, прописанная в реестре.

CEBPayment::ICEBPaymentPluginPtr plugin;

CoInitialize(NULL);

CEBPayment::ICEBPaymentPluginPtr plugin(L"CEBPayment.CEBPaymentPlugin");
plugin->config();

CoUninitialize();


И в С# и в C++ использовалось раннее связывание.



пробовал вставить код:

 цитата:
#pragma BEGINDUMP
#import "CEBPayment.dll"
CEBPayment::ICEBPaymentPluginPtr plugin;
HB_FUNC( MYDL ) {
CoInitialize(NULL);
CEBPayment::ICEBPaymentPluginPtr plugin(L"CEBPayment.CEBPaymentPlugin");
plugin->config();
CoUninitialize();
}
#pragma ENDDUMP


сыпятся ошибки:

 цитата:
Error E2503 magazin.prg 10637: Missing or incorrect version of TypeLibImport.dll in function HB_FUN_MYDL
Error E2451 magazin.prg 10638: Undefined symbol 'CEBPayment' in function HB_FUN_MYDL
Error E2379 magazin.prg 10638: Statement missing ; in function HB_FUN_MYDL
Warning W8065 magazin.prg 10639: Call to function 'CoInitialize' with no prototype in function HB_FUN_MYDL
Error E2379 magazin.prg 10640: Statement missing ; in function HB_FUN_MYDL
Error E2451 magazin.prg 10641: Undefined symbol 'plugin' in function HB_FUN_MYDL
Warning W8065 magazin.prg 10642: Call to function 'CoUninitialize' with no prototype in function HB_FUN_MYDL



видимо что то не хватает или не совместимо...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6953
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.10.18 17:01. Заголовок: я пробовал Impdef но..


я пробовал Impdef но список получился не большой
 
LIBRARY CEBPAYMENT.DLL

EXPORTS
DllCanUnloadNow @3 @0 ; DllCanUnloadNow
DllGetClassObject @4 @1 ; DllGetClassObject
DllRegisterServer @2 @2 ; DllRegisterServer
DllUnregisterServer @1 @3 ; DllUnregisterServer



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1087
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 19.10.18 17:17. Заголовок: Ну, во-первых, надо ..


Ну, во-первых, надо включить соответствующие C заголовки:
#include <windows.h>
#include <ole2.h>
#include <ocidl.h>

Во вторых, в #pragma BEGINDUMP ... #pragma ENDDUMP это, наверное, не может компилироваться, т.к. это C++ код. а Harbour использует C компилятор.
Поэтому надо вынести код в отдельный файл с расширением cpp и откомпилировать:
void mydl( void ) 
{
...
}

и вызывать эту mydl() из HB_FUNC( MYDL ):

#pragma BEGINDUMP 
HB_FUNC( MYDL ) {
mydl();
}
#pragma ENDDUMP


Может, что-то получится.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 464
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет