Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.21;
Скачать: CL | DM;

Вниз

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

 
SPeller ©   (2009-05-14 11:48) [0]

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

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


 
KSergey ©   (2009-05-15 09:12) [1]

Варианта 2:

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


 
KSergey ©   (2009-05-15 09:14) [2]

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

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


 
SPeller ©   (2009-05-15 16:53) [3]

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

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

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


 
palva ©   (2009-05-16 19:39) [4]

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


 
Тыщ ©   (2009-05-16 21:41) [5]

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


 
KSergey ©   (2009-05-17 12:12) [6]

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


 
SPeller ©   (2009-05-18 05:43) [7]


> OMF2D

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


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

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


 
palva ©   (2009-05-18 14:09) [8]


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

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



Страницы: 1 вся ветка

Текущий архив: 2010.03.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
2-1263473743
sana
2010-01-14 15:55
2010.03.21
Работа с массивом


2-1263392044
Виталий Панасенко
2010-01-13 17:14
2010.03.21
АДО и master-detail


2-1263563053
Pavel
2010-01-15 16:44
2010.03.21
Компонент IdHTTPServer и домашщний каталог


2-1263898004
виктор
2010-01-19 13:46
2010.03.21
Как изменить свойство группы компонентов?


11-1214116630
Trejder
2008-06-22 10:37
2010.03.21
Delphi + KOL = WinCE?