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

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

А можно ли в дельфи импортировать функции, написанные на C++?


SPeller ©   (2009-05-14 11:48:00) 

Компилю простейшую функцию без параметров и результатов в объектный файл с расширением исходника .с и .cpp (имя обернуто в extern "C"). В первом случае функция успешно линкуется в дельфю с добавлением префикса подчерка, а вот во втором - фигу. Сам объектный файл обрабатывается, если заюзать там вызовы других функций, то ругается на unresolved external, но саму функцию подцепить не удается. Сравнивал результаты борландовского аналога дампбина на обоих объектных файлах и в первом случае функция обозначена как PUBDEF, а во втором как COMDEF. Простое изменение типа записи на PUBDEF приводит к сообщению об ошибочном формате объектного файла. Можно ли как-то дельфи заставить подцепить нужную функцию, либо билдер заставить сгенерить нужное описание функции в объектном файле?

Юзаю 2009-й бдс, но припоминаю что однажды уже сталкивался с этим, возможно на 6-ке.


palva   (2009-05-18 14:09:00) [1]


> Может я плохо искал, но в том, что выдает BCC, не нашел этого.

Скорее всего я ошибся. Я имел в виду что-то подобное опции -P, но последняя управляет принудительной компиляцией как cpp, а сишного аналога, по-видимому, нет.


SPeller   (2009-05-18 05:43:00) [2]


> OMF2D

Спасибо. Нашел, скачал, почитал инструкцию, вроде должно помочь. Но пока что надобность отпала - переписал что было нужно на дельфи :)


> принудительно компилировать как c

Может я плохо искал, но в том, что выдает BCC, не нашел этого.


KSergey   (2009-05-17 12:12:00) [3]

Тогда может есть смысл привести ошибку "то ругается на unresolved external", еще мне не понятно чть есть "но саму функцию подцепить не удается".
Может ругается на плюсовый run-time?


Тыщ   (2009-05-16 21:41:00) [4]

Вместе с OMF2D шел пример подключения C++ .obj в Delphi.


palva   (2009-05-16 19:39:00) [5]

Я тоже с этим сталкивался. Но ведь cpp-файл можно указанием параметра командной строки (не помню какого) принудительно компилировать как c


SPeller   (2009-05-15 16:53:00) [6]

Я же не зря написал про extern "C" и добавившийся подчерк, поэтому декорации имен нет. Имя объявлено в точности, как оно есть в объектном файле (люблю F3 пользоваться).

На счет DEF сомневаюсь, т.к. он влияет на работу линковщика, а в объектном файле оный еще не у дел.

lib можно распаковать в набор obj файлов. Но если дельфя не может функцию если файл цпп, то с вытащенными из либы будет так же.


KSergey   (2009-05-15 09:14:00) [7]

Еще можно .DEF файл сделать в проекте, я вот только не очень в курсе как он на obj влияет.

К стати, а можно поделиться методикой как к дельфи прикрутить плюсовые obj или даже лучше lib? Крайне интересно, хотя бы откуда начать. D5


KSergey   (2009-05-15 09:12:00) [8]

Варианта 2:

1) или посмотреть как тама предисказилось имя, так в дельфи и называть
2) почитать ветки типа
http://www.experts-exchange.com/Programming/Languages/CPP/Q_21346922.html
ну и т.п., которые попадаются по завросу "C++ decoration off" в гугле


Наверх

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