Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.51 MB
Время: 0.03 c
14-1091553860
DDA
2004-08-03 21:24
2004.08.22
jmp +$06


11-1079561344
RTWolf
2004-03-18 01:09
2004.08.22
PopupMenu


4-1089625023
DVM
2004-07-12 13:37
2004.08.22
CAD программно в Win9X


14-1091648867
Гаврила
2004-08-04 23:47
2004.08.22
Детский стишок


3-1090906118
artem123
2004-07-27 09:28
2004.08.22
Инкрементное поле в Firebird 1.5 через dbExpress