Автор Тема: Кто может помочь с программированием на C++ Builder?  (Прочитано 2176 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alexey6522

  • Новичок
  • Сообщений: 9
Доброго времени суток! Нужна помощь в программировании на C++ builder, вот кусок кода на Delphi функция подключения библиотеки azimuth,
пытаюсь перевести этот код на C++

//Delphi

implementation

{$R *.dfm}
//Объявляем функцию подключения к библиотеке
Function OpenDLL(OpName,Psw,DevName:PChar; Baudrate: PChar; FlagOem: Integer): Integer; stdcall; far; external 'azimuth.dll' name 'OpenDLLPlus';
procedure TForm2.FormShow(Sender: TObject);
var Dllka: HMODULE;
StartSeans: function(): integer;
begin
Dllka:=LoadLibrary('azimuth.dll');
If Dllka=0 then Begin
  ShowMessage('Библиотека не найдена!');
  Application.Destroy;
end;
//Подключаем ДЛЛ
OpenDll('', 'AERF', 'COM1', '9600', 0);
StartSeans:=GetProcAddress(Dllka, 'StartSeans');
end;
« Последнее редактирование: 09/09/2014 11:07:48 от alexey6522 »
 

Оффлайн drfaust

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 2688
  • Похвалили: 79 раз(а)
  • Я не Шариков, просто судьба располосовала мой лоб.
  • Откуда: РФ, Лангепас, MSK+2 (UTC+5)
    • drfaust.asuscomm.com

HMODULE Dllka; /*хэндл*/
int (*StartSeans)(void);/*указка на функцию типа int func(void)*/


Dllka=LoadLibrary('azimuth.dll');
if(Dllka==0)
{ShowMessage('Библиотека не найдена!');
  Application.Destroy(); /*возможно надо Application->Destroy();*/
}


//Подключаем ДЛЛ
OpenDll('', 'AERF', 'COM1', '9600', 0);
StartSeans=GetProcAddress(Dllka, 'StartSeans');/*возможно потребуется приведение типа*/

Пишу по памяти - мог накосячить.
Не кассами одними жив ЦТО ;-)
 

Оффлайн alexey6522

  • Новичок
  • Сообщений: 9
А самое важное в этом коде, объявление функции как будет выглядеть
Function OpenDLL(OpName,Psw,DevName:PChar; Baudrate: PChar; FlagOem: Integer): Integer; stdcall; far; external 'azimuth.dll' name 'OpenDLLPlus';
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1685
  • Похвалили: 46 раз(а)
if(Dllka==0)
{ShowMessage('Библиотека не найдена!');
Наверное, правильнее будет так:
if(Dllka==Null)
?
Есть только  миг
 

Оффлайн alexey6522

  • Новичок
  • Сообщений: 9
Ругается на
  StartSeans=GetProcAddress(Dllka, "StartSeans");/*возможно потребуется приведение типа*/

ОШИБКА
[BCC32 Error] Unit1.cpp(30): E2034 Cannot convert 'int (__stdcall *)()' to 'int (*)()'
 

Оффлайн alexey6522

  • Новичок
  • Сообщений: 9
Добавил к строке int (*StartSeans)(void);
 int __stdcall(*StartSeans)(void);/*указка на функцию типа int func(void)*/
ошибка E2034 Cannot convert 'int (__stdcall *)()' to 'int (*)()' исчезла
Теперь кто поможет перевести объявление функции?!
Function OpenDLL(OpName,Psw,DevName:PChar; Baudrate: PChar; FlagOem: Integer): Integer; stdcall; far; external 'azimuth.dll' name 'OpenDLLPlus';
 

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22