Главная страница
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
3-1236248430
WeTeR
2009-03-05 13:20
2010.03.21
Процедура для определения типа столбца таблицы


2-1263500664
Inna21
2010-01-14 23:24
2010.03.21
Запрос на нескольких DBF


4-1228570622
Саня
2008-12-06 16:37
2010.03.21
как потушить монитор , Windows Xp


6-1215009957
FireMan_Alexey
2008-07-02 18:45
2010.03.21
Proxy-Server вопрос по RFC2068


2-1263492244
lewka
2010-01-14 21:04
2010.03.21
Обращение к ТStringGrid на другой TForm