Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование сторонних DLL-лок

2.0K
12 февраля 2004 года
spike
19 / / 22.04.2003
Вообще мне надо заставить работать фискальный регистратор (Феликс - Р Ф вер. 01).
Есть:
Felix.dll драйвер
Felix.h интерфейс для С, С++
FelixDRV.pas интерфейс для Delphi

файл - Felix.h
 
Код:
<skip>
//      Открыть COM порт для обмена
HFelix frfInitTransport(const char* PortName, const char* Password, int SPEED);
// SPEED = 0 - скорость 9600 бод
// SPEED = 1 - скорость 19200 бод

//      Закрыть COM порт
int frfDoneTransport(HFelix H);
<skip>


файл - FelixDRV.pas
Код:
<skip>
unit FelixDrv;

{    Borland Delphi (5.0) unit for FelixF-R cash register.
     API for felix.dll driver.
}

interface

type HFelix = Cardinal;
     frfFelixStatus = packed record
       ErrorCode: shortint;
       HardStatus: byte;
       CurrentStatus: word;
       PrinterStatus: byte;
     end;

{$EXTERNALSYM frfInitTransport}
function frfInitTransport(PortName, CommunicationPassword: PAnsiChar; SPEED: integer): HFelix; stdcall;
{$EXTERNALSYM frfDoneTransport}
function frfDoneTransport(Handle: HFelix): HRESULT; stdcall;
<skip>
implementation

const FiscalDrv = 'Felix.dll';
function frfInitTransport; external FiscalDrv name 'frfInitTransport';
function frfDoneTransport; external FiscalDrv name 'frfDoneTransport';
function frfNewCicle; external FiscalDrv name 'frfNewCicle';
<skip>


Что мне сделать, чтобы я мог пользоваться этой ddl-кой. Точнее вызывать функции из неё.
2.0K
13 февраля 2004 года
spike
19 / / 22.04.2003
Я пробывал динамчески подключать dll-ку, но так как я этого раньше не делал, то у меня не получается.

Где можно почитать подробно как это делает, а то я что-то не смог понять что я нет так делаю.
в книжке Программирование в С++Builder 5.0 А.Я. Архангельского написано следующее:
Если функция MyFunc(), то надо:
Объявить указатель на эту функцию. Например:
 
Код:
void (__stdcall *MyFunc) (HWIND)


Тогда операции с библиотекой могут строиться по следующей схеме:

Код:
// загрузка dll
HINSTANCE dllInstance = LoadLibrary ("mydll.dll");

// получение адреса функции
MyFunc = (void (__stdcall*) (HWIND)
                                 GetProcAddress (dllInstance, "_MyFunc");

// вызов функции
MyFunc(Appliaction->Handle);

// выгрузка dll
FreeLibrary(dllInstance);


1 Где объявляется этот указатель ???
 
Код:
void (__stdcall *MyFunc) (HWIND)


2 Где описывается "получение адреса функции" уже есть ошибка, т.к. нехватает скобки одной.
надо ли скобка пере "void"
// получение адреса функции
 
Код:
MyFunc = (void (__stdcall*) (HWIND)
                                 GetProcAddress (dllInstance, "_MyFunc");


Плиз хелп. Правильно ли это описано в книге ?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог