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

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

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?


Наверх

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