![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А можно ли в дельфи импортировать функции, написанные на 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" в гугле