![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Cи и Делфи. Вопрос. [D6, WinXP]
Iconka © (2004-08-06 12:32:00)Приветствую всех!
Подскажите пожалуста, есть у меня множество модулей написанных на Си, откомпилировать их проблемы не составляет, а вот как мне процедуры из этих модулей использовать в Делфи?
Iconka (2004-08-06 14:11:00) [1]Вот так наверно и сделаю :)
Помоему проще всего.
Digitman (2004-08-06 14:09:00) [2]
> Iconka © (06.08.04 14:05) [18]
запросто !
Iconka (2004-08-06 14:05:00) [3]А если в C++Builder написать компонент "обвертку" его можно потом усстановить в Delphi?
wicked (2004-08-06 13:52:00) [4]устал давать уже ссылку -
http://www.astonshell.com/dl.htm#c2pas32
всего оно, конечно же, не переведет... но здорово облегчит жизнь...
схема такова:
1. компилируем c в obj
2. переводим h в pas-модули, дописываем им директивы линковки к obj'ам...
Digitman (2004-08-06 13:33:00) [5]
> Iconka © (06.08.04 13:26) [14]
есть.
но тобой этот вариант, видимо, изначально не предусмотрен
вариант заключается в создании на С библиотеки, предст.собой OLE/СОМ-сервер автоматизации, содержащий либо в своем теле либо в виде отдельного TLB-файла т.н. библиотеку типов.. это - технологический стандарт Майкрософт, которого придерживаются производители средств разработки для платформ Майкрософт .. если тобой в С-среде создан такой сервер автоматизации, то получение нужных прототипов в среде Делфи сводится к простому вызову меню Project -> Import Type Library, в рез-те чего ты одним щелчком мыши получаешь готовый PAS-файл, описывающий все типы, используемые п/программами серверной библиотеки
WondeRu (2004-08-06 13:31:00) [6]насчет H-файлов смотри на delphi-jedi, там куча сконвертированных заголовочных файлов + есть конвертер h to pas!
Iconka (2004-08-06 13:26:00) [7]Получается то же самое что и с dll-кой :((
Может есть какие варианты что бы не переписывать типы?
Digitman (2004-08-06 13:23:00) [8]
> Iconka © (06.08.04 13:15) [12]
> А для типов тоже надо???
ну а как же ? конечно надо ! ведь компилятор паскаля должен знать все о данных конкретного типа ...
если некая С-процедура принимает в кач-ве параметра, скажем, некую структуру, то должен же компилятор Паскаля при формировании кода вызова этой С-процедуры знать все об этой структуре, чтобы сформировать фактический параметр в том виде, в котором его ожидает С-процедура !
Iconka (2004-08-06 13:15:00) [9]
> так и в этом случае прототипы понадобятся !
Ну для функций - понятно.
А для типов тоже надо???
Digitman (2004-08-06 12:54:00) [10]
> Iconka © (06.08.04 12:50) [10]
> Попробую вариант с obj файлами
так и в этом случае прототипы понадобятся !
в любом случае они нужны ...
простые типы вроде UINT и т.п. уже "переведены" в модуле Windows, но как быть, например, со структрурами, которые фигурируют в исх.текстах в С- и Н-файлах ? тоже ведь нужно показать компилятору/линкеру Паскаля, где и что и как ...
Iconka (2004-08-06 12:50:00) [11]
> Ну тогда переводи заголовок на Паскаль и пользуйся :)
Э... "простые" - в смысле обычные, а на деле очень сложные, долго переводить придется :(
Попробую вариант с obj файлами
Romkin (2004-08-06 12:48:00) [12]Ну тогда переводи заголовок на Паскаль и пользуйся :)
Iconka (2004-08-06 12:47:00) [13]
> Если из dll экспортируются объекты - то фигушки :)
Нет, там простые структуры. (Язык Си, а не Си++)
Digitman (2004-08-06 12:46:00) [14]
> Iconka © (06.08.04 12:43) [4]
> можно ли использовать типы описанные в h файлах
нельзя ... там синтаксис С , а не Паскаля
> хранятся ли они в dll?
нет, не хранятся
Romkin (2004-08-06 12:46:00) [15]Смотря какие типы. Если из dll экспортируются объекты - то фигушки :)
Digitman (2004-08-06 12:45:00) [16]
> Iconka © (06.08.04 12:40) [3]
файлы Н и С не годятся для использования в среде Делфи
зато вполне сгодятся файлы OBJ, которые ты получаешь компиляцией соотв.файлов Н и С в С-шной среде ... полученные файлы подключаешь к Делфи-проекту указанием их имен директивами $LINK в тех модулях, где планируется обращение к экспортируемым идентификаторам, содержащимся в подключенных тобой OBJ-файлах
Iconka (2004-08-06 12:43:00) [17]Нашла. Оказывается есть dll-ка сделаная из всего этого. Тогда вопрос такой, можно ли использовать типы описанные в h файлах, хранятся ли они в dll?
Iconka (2004-08-06 12:40:00) [18]
> То что на СИ - DLL?
Это файлы с расширением H и С.
Для использования на Си они подключаются директивой include и используются.
Digitman (2004-08-06 12:35:00) [19]см. директиву $LINK
xZer0 (2004-08-06 12:34:00) [20]То что на СИ - DLL?