Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 7
1

Как указатели из библиотеки dll на с++ использовать в delphi

12.03.2015, 15:34. Просмотров 553. Ответов 1
Метки нет (Все метки)

Добрый день.
Вопрос состоит в следующем, у меня есть библиотека на c++, из которой нужно утащить некоторые функции. Пример функции, которую мне нужно забрать:
C++
1
2
3
4
5
6
7
8
9
bool WINAPI SMC_GetAddr(int wna, int &addr)
{
  EnterCriticalSection(&Cs);
  LPCSTR CmdName = CmdNames[CMD_GETADDR];
  bool rx = CmdExe(wna, CMD_GETADDR, CmdName, 0, WNData);
  addr = WNData[1];
  LeaveCriticalSection(&Cs);
  return(rx);
}
В delphi я присоединила ее с помощью
Delphi
1
function SMC_GetAddr(wma:Integer; addr:Integer):Boolean;stdcall;external'smc32.dll';
а потом в программе использую как
Delphi
1
2
3
4
5
6
7
procedure TPagesDlg.Button12Click(Sender: TObject);
var
  addr:PINT;
begin
     SMC_GetAddr(wmaG,addr^);
     Label27.Caption:=IntToStr(addr^);
end;
или
Delphi
1
2
3
4
5
6
7
procedure TPagesDlg.Button12Click(Sender: TObject);
var
  addr:Integer;
begin
     SMC_GetAddr(wmaG,addr);
    Label27.Caption:=IntToStr(addr);
end;
Но компилятор в обоих случаях выдает ошибку "access violation at address..."
Помогите, пожалуйста, разобраться с указателями с++/дельфи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2015, 15:34
Ответы с готовыми решениями:

Есть исходник DLL на Delphi как (и возможно ли) написать похожее на VB.NET и использовать в среде программы написанной на Delphi
Суть вопроса вкратце такова - Есть исходник DLL написанной на Delphi Library Extdll; uses ...

Как использовать в Delphi dll из .Net
Всем здравствуйте. Задача: разработать библиотечное приложение (работа с библиотечным сервером и...

dll на с++ использовать в delphi
Уважаемые здравствуйте, хотел поинтересовать особенностью подключения dll на с++ в delphi, описание...

Как использовать методы библиотеки DLL, и игнорировать их, когда DLL нету?
Как использовать методы библиотеки DLL , и игнорировать их когда DLL нету Что нужно , мне нужно...

1
2644 / 2267 / 278
Регистрация: 24.12.2010
Сообщений: 13,725
12.03.2015, 15:55 2
function SMC_GetAddr(wma:Integer; addr:PInteger):Boolean;stdcall;exter nal'smc32.dll'; (1)
или
function SMC_GetAddr(wma:Integer; var addr: Integer):Boolean;stdcall;exter nal'smc32.dll'; (2)
или
function SMC_GetAddr(wma:Integer; out addr: Integer):Boolean;stdcall;exter nal'smc32.dll'; (3)

..
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
var
  addr:Integer;
  paddr: PInteger; absolute  addr; // (compile time)
..
 
paddr := @addr; //(run time), пользовать вместо (compile time)
 
     SMC_GetAddr(wmaG, @addr);// (1)
или
     SMC_GetAddr(wmaG, paddr);// (1)
или
     SMC_GetAddr(wmaG, addr);// (2), (3)

Не по теме:

Указательные премудрости нужно знать как Отче Наш !
Без них никуда.

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2015, 15:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как использовать подпрограммы из библиотеки <.DLL> в программах?
Как использовать подпрограммы из библиотеки &lt;.DLL&gt; в программах на Visual C++, (статически) если...

Подключение библиотеки (DLL) на Delphi к проекту на C#
Добрый день. Создал длл на Delphi XE2 library Lic; uses System.SysUtils, ...

Написание dll - библиотеки и ее открытие средствами Delphi
Есть некоторая dll-библиотека, которая вычисляет площадь и периметр n-угольника. Лабораторная была...

Delphi + Sqllite3.dll + Resource извлечь, подключить, использовать
Для работы с Sqllite требуется dll Sqllite3.dll которая обязана находится в папке рядом с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.