Главная страница
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.066 c
3-1091159704
rus9
2004-07-30 07:55
2004.08.22
TQuery


6-1087933402
Dominik
2004-06-22 23:43
2004.08.22
Передача двоичной информации(jpg картинки) через сокеты (WinSock)


14-1091540043
Igor_thief
2004-08-03 17:34
2004.08.22
Class


1-1091721731
Луарвик
2004-08-05 20:02
2004.08.22
TStrings: как удалить пустые строки?


14-1091777066
VID
2004-08-06 11:24
2004.08.22
Зацените, плиз...