Форум: "Основная";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];
Вниз
А можно ли в дельфи импортировать функции, написанные на 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c