Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.028 c
4-1089605641
DION
2004-07-12 08:14
2004.08.22
Инфо по винту...


3-1091159310
don-do
2004-07-30 07:48
2004.08.22
Помогите плз. ссылкой или кодом


14-1091241121
Думкин
2004-07-31 06:32
2004.08.22
С днем рождения! 31 июля


14-1091652820
Soft
2004-08-05 00:53
2004.08.22
Нам не страшен рыжий Чубайс, или рабочий ВД второго рода.


1-1091691966
Alek
2004-08-05 11:46
2004.08.22
UTF-8





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский