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