Вот хочу юзать компилер DCC32.EXE v15 чтобы делать на нем всю фигню: SYS & COM файлы (которые могут делаться на D2). Естественно для многих нужд сельцково хозяйства (драйвера и OSи). По идее нужен спец линкер (Или конвертор в 'чистый' COFF/OMF), т.к ДЦЦ очень любит вставлять мусор или данные в область кода. Вот хочу запариться с подобной рульной тулзой. Но с инфой прямо беда.. Основная трабла с COMDEF'ами(от бордерланд). Никому не попадались какие-нибудь решения или инфа? Помогите!
Вроде бы это нельзя делать. D2 (?) могла делать бинарики под 16битные приложения, а заставить D6+ это делать, имхо, невозможно.
trash unilink и Delphi 3.0. Альтернативой можно юзать мелкомягкий линкер. Для шестерки, врядли сейчас есть что-то готовое - слишком компилер испортился.
СОМ-ки можно делать на дельфе! Аттачу пример... Для прикола при компиляции использовался архи-древнейший турболинкер v3.0 (1990г). unilink хоть и переваривает D7, однако отвергает попытки сделать 32-битный комок-бинарник. Видимо автор (пока?) не догоняет что нужны смешивания не только COFF & OMF файлов но и кодовых сегментов. Также заценил doswin32 от этого неизвестного корпорейшена. (ссылку нашел на http://www.datarescue.com То что FAR'а работает в DOS'е удивило. А вот DCC32.EXE ни фига не пашет... Заколдованый какой-то этот компилер... 921544291__d2_com.rar
Насчет невозможности делать че-то такое на дельфе7. Вот комовая прога: unit hello; interface procedure Main;cdecl; implementation procedure int21_print (_ax:word;_dx:pchar); asm Int $21 end; procedure Main;cdecl; begin int21_print ($900,'Hello World!$'); end; end. Забавно... Ни один линкер не переваривает обджи Дэ севен, а вот TLINK'у (древнему) оно пофиг, но на сложных файлах он уже глючит _1123355695__hello.rar
Такая еще просьба Господа. В аттаче hello.rar obj-файл hello.obj (by Delphi7).. если не затруднит проверить 'хавает' ли его MS Inkremental Linker каких-нить последних версий. Поскольку Version 7.00.9466 посылает все с той-же мессагой: hello.obj : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt Так-же 'посылаються' и TASM32 файлы если содержут segment virtual : .386P _TEXT segment dword public 'CODE' use32 assume CS:_TEXT v_proc segment virtual procedure proc retn endp v_proc ends start: call procedure ends end start А так в общем-то ерундень - разобраться с COMDEF'ами и FIXUP'ами... Хотя как говорят авторы ULINK'а и DOSWIN32 - 'ох и глючен-же этот борланд'...
Нашел линковщик OPTLINK (2001г) (LINK.EXE) из пакета Digital Mars C++. В общем довольно неплохой зверь (заточен под OMF). Куча опций, брэндовый (продолжатель Symantec C++). Комки делать может (что самое главное). Только вот обджи Delphi7 переваривает так-же глючно как и TLINK v3... Переменные не находит... Из-за чего, пришлось все убирать в стек, чтобы что-то как-нибудь работало...
И почему нельзя было зафигачить опцию COM-файлов в DCC32? Кому-то и DOS рулит... Такой же плоский и 32-битный как и виндяра... _1157988680__D7_com.rar
Да... Глюки поди из-за того что линкеры делают 16-бит прогу (хотя какая разница!). В принципе конечно можно юзать PE формат + stub loader... Но опять грабли - PE прогу лучше ведь делать $MS-ишным линкером.. С неболшим алигном такие файлы совсем маленькие. Так-что придеться разгребать формат OMF да и бесит что DCC вставляет (ну например константы) в код. Это надо куда-то убирать, в конец где все данные. И подбирать выравнивание... Но вообще неясна куча моментов... Почему на стековой адресации - томоза?? Вроде память то одна... OPTLINK - ацтой. SYS драйвера NT хоть и билдяться но не пашут.