BCC_Entry_Point
Directory actions
More options
Directory actions
More options
BCC_Entry_Point
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Как компилировать с помощью Borland C++ 5.5.1 без startup code</title>
<meta http-equiv="Content-Type" Content="text/html; charset=Windows-1251">
<meta name="Author" content="Alex Yaroslavsky">
<meta name="description" content="Как компилировать с помощью Borland C++ 5.5 без startup code">
</head>
<body>
<a name="top"></a>
<h1>Как компилировать с помощью Borland C++ 5.5.1 без startup code</h1>
<div align=right><code>
Алексей Ярославский <a href="proxy.php?url=https%3A%2F%2Fgithub.com%2Fmailto%3AAlex+Yaroslavsky+%26lt%3Bat+yandex.ru+%2F+trexinc%26gt%3B%3Fsubject%3DArticles">
at yandex.ru / trexinc</a>
</code></div>
<p class=plain>Во время написания Position Saver я столкнулся с небольшой
проблемой, размер DLL-а который выдавал мой BCC 5.5.1 был просто страшным, в
районе 80KB. Я почитал статьи из энциклопедии и попытался компилировать без
startup code (c0d32.obj). Размер файла уменьшился но плагин перестал
загружаться в ФАРе. Оказалось что ilink32.exe при компилирование C++ файлов без
startup code неправильно выставлял entry point что и приводило к
неработоспособности плагина. Я начал искать в инете информацию о ручном
выставление entry point с помощью BCC и нашел что такой возможности он не даёт.
Я уже готов был сдаться но в последнюю минуту нашел то что искал.<p>
<p class=plain>Так как Борландские компиляторы не дают вручную задавать entry
point то нужно линковать с программой, объект который будет содержать уже
готовую "entry point". Такой объект можно создать из ниже приведенного ASM
файла:</p>
<pre class=code>
.386p
_TEXT SEGMENT DWORD USE32 PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA ENDS
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS ENDS
DGROUP GROUP _DATA, _BSS
ASSUME CS:_TEXT, DS:DGROUP
_TEXT SEGMENT PUBLIC DWORD USE32 'CODE'
PUBLIC EntryPoint
PUBLIC __acrtused
__acrtused label byte
EntryPoint proc near
mov eax, 1
ret 12
EntryPoint endp
_TEXT ENDS
END EntryPoint
</pre>
<p class=plain>Объект полученный после компиляции этого файла (с помощью Turbo
Assembler-а) можно линковать вместе с программой для получения работающего
DLL-а без startup code с помощью BCC 5.5.1</p>
<p class=plain>
Более подробную информацию можно найти здесь
<a href=http://www.wd-mag.com/articles/1999/9901/9901e/9901e.htm?topic=articles>Windows Developer Magazine Online</a>.</p>
<div align=right><code>
<br> <br>
02.06.2002<br>
</code></div>
<div class=seecont><a href="#top">наверх</a></div>
</body>
</html>