Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > DLL библиотеки


Автор: Victor 18.2.2004, 22:25
Может я неправильно понимаю, я делаю FILE->NEW->OTHER->DLL WIZARD, тама пишу пару процедур все компилиться, потом создаю проект пишу
procedure count;
external 'Mydll.dll'
begin
...
count;
...
end;
ненаходил длл, я компилю и длл и проект, потом кладу их в 1 папку
confused.gif

Автор: Pakshin A. S. 18.2.2004, 22:34
Пропиши полный путь... Посмотри...

В Help'е есть хорошие примерчики, глянь их...

Автор: x77 18.2.2004, 22:44
Victor, скопируй полученную dll-ку в system32 (или system для 98)

Автор: Петрович 19.2.2004, 09:50
Цитата
Victor, скопируй полученную dll-ку в system32 (или system для 98)

Совсем не обязательно. При статическом связывании достаточно что-бы Dll лежала в том-же каталоге что и EXE-шник.

to Victor:
Что-то не так написал, кидай более подробный код сюда.

Автор: Victor 19.2.2004, 11:13
Source:
Код

program Project1;

uses
 Forms;

{$R *.res}

procedure testing;
external 'test.dll';

begin
 Application.Initialize;
 Application.Run;
 testing;
end.


Library:
Код

library test;

uses
 ShareMem,
 Dialogs,
 SysUtils,
 Classes;

{$R *.res}

procedure testing;
begin
showmessage('test');
end;

begin
end.

Error:
Файл PROJECT1.EXE связан с несуществующим компонентом test.dll:testing;
Присоедененное к системе устройство не работает

Автор: Victor 19.2.2004, 11:14
ложу все в c:\
пишу external 'c:\test.dll'; - тоже самое =(

Автор: Victor 19.2.2004, 11:16
x77 ложил в system, system32, windows:) не работает

Автор: Петрович 19.2.2004, 12:19
А так куда не ложи smile.gif, все равно не найдет. Он-же тебе "ясно" гутарит:
Цитата
Файл PROJECT1.EXE связан с несуществующим компонентом test.dll:testing

В смысле не test.dll не найден, а не найден testing в нем smile.gif

А что-бы находил, надо его (testing) экспортировать из test.dll. Делается это так, в test.dll, где-нибудь после текста testing пишешь:

Код
exports testing;

Тем самым, ты сообщишь компилятору что функция (процедура) testing будет вызываться извне DLL.
Если экспортируеш несколько функций (процедур), то можеш перечислить их списком.

Автор: Victor 19.2.2004, 13:30
Спасибо!

Автор: Victor 19.2.2004, 21:09
бред
я пишу имя в конце 2 цифры добавляю уже не работает, допустим
abvgd12 - не работает
abvgd - работает
почему ?

Автор: Петрович 20.2.2004, 00:02
Цитата
abvgd12 - не работает

В смысле, так и говорит: "Не работаю" smile.gif ?

Автор: Victor 20.2.2004, 16:13
Нет ерор описанный выше типа процедуру неможет найти а если имя библиотеки делаю на 2 символа а именно цифры короче то работает

Автор: <Spawn> 20.2.2004, 16:57
попробуй:
procedure abvgd12;external 'C:\test.dll' name 'abvgd12';

Автор: <Spawn> 20.2.2004, 16:58
а ты правишь exports?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)