Привет, All!
Есть набор исходников подпрограмм на Си. Хочется к ним обратиться из
программы на VP. Сами функции тихие, без всяких там malloc или spritf, так что
с совместимостью рантаймов проблем быть не должно.
Чтобы VP не лепил к именам функций имя юнита, ставлю {&Orgname+}.
Компилирую сишные программы при помощи Watcom с ключиками типа -s -5s.
Получаются объектники, у которых имена функций чистые, без '@' впереди.
Казалось бы, хорошо. Hо слинковать всё равно не получается: линкер VP говорит,
что unsupported формат записи в obj-файле. Винда или OS/2 - не важно (что host,
что target).
Понимаю, что можно через dll, но хочется слинковать статически. Hеужто
никак?
С уважением, Alexey.
...В действительности всё совсем не так, как на самом деле.
С проблемой подробно не разбирался, сделал по принципу "работает и пофиг",
нужно было быстро решить:
BCC делал несовместимый с VP .obj. Причин не помню.
Watcom делал правильный .obj, но в нем надо было после этого патчить функции из
имен "_dllnameFunctionName" на "dllname@FunctionName". Опции на компиляцию у
меня:
wpp386 -bc -d0 -zl -s x.cpp
23 Jan 06 13:29, Alexey Korop wrote to All:
AK> Есть набор исходников подпрограмм на Си. Хочется к ним обратиться
AK> из программы на VP. Сами функции тихие, без всяких там malloc или
AK> spritf, так что с совместимостью рантаймов проблем быть не должно.
AK> Понимаю, что можно через dll, но хочется слинковать статически.
1. компилируешь xxx.c.
2. wdisasm -a xxx.obj>xxx.asm (с 11 версии он wdis или как-то так зовется)
3. В xxx.asm удаляешь все лишние extrn (ватком зачем-то экспортит и тут же
_импортит_ все глобальные переменные объектника).
4. tasm xxx.asm
Dmitry.
23.01.2006 в 13:29:03 Alexey Korop написал к All:
AK> Есть набор исходников подпрограмм на Си. Хочется к ним обратиться
AK> из программы на VP.
Спасибо всем ответившим. Попробую обязательно, но сейчас время поджимало,
так что проблему обошёл через dll.