Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DLL без SysInit.pas и System.pas


Страницы:   1 2

ph0sgen ©   (2006-08-11 19:52:00) 

Здравствуйте, уважаемые мастера.

Пытаюсь написать DLL отказавшись от стандартных
модулей SysInit.pas и System.pas.

Какое минимальное содержание должны иметь эти модули
для коррекной работы?

если кто сталкивался, прошу откликнуться.

заранее благодарен.


ANTPro   (2006-08-13 20:28:00) [21]

2Чапаев
dcc32.exe -Q system.pas sysinit.pas -M -Y -Z -$D- -O

2XProger
У тебя есть более функциональные модули?


Чапаев   (2006-08-13 19:53:00) [22]

> [12] XProger ©   (13.08.06 19:33)

Только как скомпилить System и SysInit? dcc32 говорит, что невозможно использовать зарезервированное имя.


Ketmar   (2006-08-13 19:43:00) [23]

> [12] XProger ©   (13.08.06 19:33)
не всё так просто. для пустой dll -- да. а если там код, то такими "заглушками" не всегда обойтись можно.

совсем оффтоп: а вот если это это
Function AddNumbers ( Byval operand1 As Integer, _
 Byval operand2 As Integer ) As Integer export

 Return operand1+operand2
End Function

собрать FreeBASIC'ом, получится DLL на 5 кил. и никаких танцев с бубнами. все на FreeBASIC! (кстати, удобная штука %-).


XProger   (2006-08-13 19:33:00) [24]

jack128, а зачем занимать эту пару килобайт на диске? Зачем добавлять в моё приложение код работы со строками, динамическими массивами, менеджера памяти, RTL и прочих не нужных мне (в данном проекте) функций?
Спортивный интерес имхо :)

ph0sgen,
SysInit.pas
unit SysInit;

interface

procedure _InitExe;
procedure _halt0;
procedure _InitLib(Context: PInitContext);

var
 ModuleIsLib : Boolean;
 TlsIndex    : integer = -1;
 TlsLast     : Byte;

const
 PtrToNil: pointer = nil;

implementation

procedure _InitLib(Context: PInitContext);
asm
LEAVE
RET 12
end;

procedure _InitExe;
asm
end;

procedure _halt0;
asm
end;

end.

System.pas
unit System;

interface

procedure _HandleFinally;

type
 TGUID = record
   D1: LongWord;
   D2: Word;
   D3: Word;
   D4: array [0..7] of Byte;
 end;

 PInitContext = ^TInitContext;
 TInitContext = record
   OuterContext   : PInitContext;
   ExcFrame       : pointer;
   InitTable      : pointer;
   InitCount      : integer;
   Module         : pointer;
   DLLSaveEBP     : pointer;
   DLLSaveEBX     : pointer;
   DLLSaveESI     : pointer;
   DLLSaveEDI     : pointer;
   ExitProcessTLS : procedure;
   DLLInitState   : Byte;
 end;

implementation

procedure _HandleFinally;
asm
end;

end.

dll.dpr
library dll;

begin
 // blablabla
end.

make.bat
dcc32 dll.dpr -m -y
dcc32 dll.dpr


Проверено на компиляцию в dcc32.exe 18 версии (Delphi 10)


jack128   (2006-08-13 17:55:00) [25]

а можно узнать, зачем всё это??пары килобайт на винте жалко?


ANTPro   (2006-08-13 02:02:00) [26]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1131453880&n=10

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1147450294&n=10


ANTPro   (2006-08-13 00:20:00) [27]

Придется ковырять самому :(
пока минимум 5120 б


Ketmar   (2006-08-12 23:55:00) [28]

> [7] ANTPro ©   (12.08.06 23:49)
не могу -- Заратустра запрещает. %-) остались только .dcu, и те заточены под конкретную программку.


ANTPro   (2006-08-12 23:49:00) [29]

Ketmar ©   (12.08.06 22:59) [6]
лично делал именно так

Можешь кинуть куда-нибуть поглядеть, че-то не получается :(


Ketmar   (2006-08-12 22:59:00) [30]

> [5] Stexen   (12.08.06 22:54)
а вот и не угадал. ещё много чего нужно. а что конкретно -- зависит от задачи. потому и говорю -- усекать, пока не упадёт. лично делал именно так. %-)


Stexen   (2006-08-12 22:54:00) [31]

хм, наверняка нужны только описание апи функций, соответсвенно описываешь у себя и все, а вообще возми aspack и не мучайся...


Ketmar   (2006-08-12 19:50:00) [32]

> [0] ph0sgen ©   (11.08.06 19:52)
берёшь и усекаешь. до момента, пока не перестанет работать.


apic   (2006-08-12 17:18:00) [33]

Да уж куда меньше!!! Попробуй на ASM


ph0sgen   (2006-08-11 20:08:00) [34]

мне нужно минимальное содержание, лишь бы компилятир не орал.
а дальше справлюсь


Мефисто   (2006-08-11 19:58:00) [35]

Что твое приложение требует, то и вставляй из соотвествующих юнитов. Телепатов нет. Откуда нам знать, что тебе понадобится из данных юнитов для его работы.

P.S. А если задуматься, шкурка выделки стоит?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо