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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2010, 00:00   #1
Nostalgia
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 44
По умолчанию Dll

Создала свою Dll-ку в Delphi. Для неё - Unit. как связать её с другой программой имеющей свой модуль Unit?
Слышала что-то про Project|Build. Для чего это нужно?
Nostalgia вне форума Ответить с цитированием
Старый 04.01.2010, 00:15   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну а в чем проблема?
пишем интерфейсный модуль к этой ДЛЛ

допустим из ДЛЛ экспортируется функция
function Summ(a1,a2:integer):integer;

тогда в интерфейсной части пишем
function Summ(a1,a2{имя переменных не важно, важен тип и порядок}:integer):integer;external <имя DLL> name 'Summ';//так же можно еще по индексу
если параметр name опустить то используется имя функции(в данном случае ничего не изменится)

можно еще создать модуль для динамического подключения.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.01.2010, 00:17   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вы в вашей dll указывали секции экспорта... вот имена этих функций и укажите в основной программе... например статически:
Код:
procedure glGenTextures(n: GLsizei; var Textures: GLuint); stdcall;external 'opengl32.dll';
или динамически:
Код:
var 
key:function(pid,par: dword):pchar;stdcall;LibHandle: THandle; 

implementation

function win_key(pid,par: dword; name: shortstring):string;
begin
 //динамический вызов
 @key:=nil;

 LibHandle:= LoadLibrary(pchar(s));
 if LibHandle>= 32 then
  begin
   @key:= GetProcAddress(LibHandle,'key');
   if @key<> nil then result:= string(key(pid,par));
  end;
 //освобождение памяти
 FreeLibrary(LibHandle)
end
зы: упс... уже накатали
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку kapustin Общие вопросы .NET 10 23.09.2009 22:20
dll sergei64_89 Общие вопросы .NET 1 02.08.2008 19:52
DLL michaellos Win Api 1 16.11.2007 21:03
DLL Shico Win Api 1 16.04.2007 16:24