Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2010, 11:43   #1
Sheva_
 
Регистрация: 15.11.2010
Сообщений: 7
По умолчанию Подключение dll в Delphi

У меня есть dll написаная в C++ Builder.
Приведен код для подключения ее в С:

#ifndef _ALG_H
#define _ALG_H
#ifdef __DLL__
# define DLL_EI __declspec(dllexport)
#else
# define DLL_EI __declspec(dllimport)
#endif

extern "C" void * DLL_EI LineGen(TPoint X, TPoint Y, Graphics::TBitmap &Bitmap);

#endif



Мне нужно подключить ее в Delphi. Пробовал
procedure LineGen ( X:TPoint; Y:TPoint; Graphics:TBitmap); stdcall;
external 'Alg.dll';

При обращении к процедуре пишет: точка входа в процедуру LineGen не найдена в библиотеке Alg.dll
Sheva_ вне форума Ответить с цитированием
Старый 15.11.2010, 12:07   #2
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

как раз недавно выяснял этот вопрос.

в проекте dll у меня написана процедура:

procedure DownLoad(From,toFile:string); export;
begin
// процедура
end;

exports DownLoad name 'DownLoad'; // экспорт процедуры DownLoad с именем 'DownLoad'


код в программе:

var
Form1: TForm1;
procedure DownLoad(from,tofile:string); external 'test.dll' name 'DownLoad'

implementation
...

если говорит что не может найти точку входа,
значит не может найти процедуру DownLoad в test.dll
проверьте совпадение имен процедуры.

кстати можно еще вот так:
var
Form1: TForm1;
procedure Bugoga(from,tofile:string); external 'test.dll' name 'DownLoad'


p.s.
кому-то здесь дадут пинка за оверквотинг =)

Последний раз редактировалось xrob; 15.11.2010 в 13:52.
xrob вне форума Ответить с цитированием
Старый 15.11.2010, 12:50   #3
Sheva_
 
Регистрация: 15.11.2010
Сообщений: 7
По умолчанию

Имена процедур совпадают, попробовал несколько вариантов, все равно точка входа не найдена.
Может ли это быть связано с различием в описании формальных параметров :

extern "C" void * DLL_EI LineGen(TPoint X, TPoint Y, Graphics::TBitmap &Bitmap);

и

procedure LineGen ( X:TPoint; Y:TPoint; Graphics:TBitmap); stdcall;
external 'Alg.dll';
Sheva_ вне форума Ответить с цитированием
Старый 15.11.2010, 13:25   #4
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Код:
Может ли это быть связано с различием в описании формальных параметров :
конечно.. попробуй так:
Код:
uses
 .......
  Graphics; 

procedure LineGen ( X:TPoint; Y:TPoint; Bitmap: TBitmap); stdcall;
external 'Alg.dll';
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 15.11.2010, 13:48   #5
Sheva_
 
Регистрация: 15.11.2010
Сообщений: 7
По умолчанию

Цитата:
Сообщение от MaxNik2009 Посмотреть сообщение
Код:
Может ли это быть связано с различием в описании формальных параметров :
конечно.. попробуй так:
Код:
uses
 .......
  Graphics; 

procedure LineGen ( X:TPoint; Y:TPoint; Bitmap: TBitmap); stdcall;
external 'Alg.dll';

Попробовал, точка входа в процедуру не найдена.

Пытался поработать с dll в С++ билдере.

Код:
#ifndef _ALG_H
#define _ALG_H
#ifdef __DLL__
# define DLL_EI __declspec(dllexport)
#else
# define DLL_EI __declspec(dllimport)
#endif

extern "C" void * DLL_EI LineGen(TPoint X, TPoint Y, Graphics::TBitmap &Bitmap);

#endif

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
Image1->Canvas->FillRect(ClientRect);
Graphics::TBitmap *Graph = new Graphics::TBitmap;
TPoint X,Y;
X=TPoint(0,0); Y=TPoint(100,100);
LineGen(X,Y,Graph);
Image1->Canvas->Draw(0,0,Graph);
}
Выдает ошибку :
Код:
Cannot convert 'TBitmap &' with 'TBitmap *'
Я не оч шарю в С++ билдере, подскажите как избежать этого

Последний раз редактировалось Sheva_; 15.11.2010 в 14:43.
Sheva_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое подключение Dll С++ дашка-милашка Помощь студентам 0 14.06.2010 15:50
Подключение DLL Ninetta Общие вопросы .NET 3 01.04.2010 01:06
Подключение DLL __Demon__ C++ Builder 2 09.12.2009 00:29
Подключение DLL в Делфи Denis_Gul Помощь студентам 3 19.11.2008 11:12
Подключение DLL 5naip Помощь студентам 9 27.10.2007 20:55