Как подружить C/C++ и Pascal

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Сообщение bw » 23.11.2005 08:19:41

Кто как собирает проекты из исходников написанных на разных языках?
Я помогаю одним товарищам, пишущих на C/C++ под nix/win. Но так как мои познания C/C++ недостаточны, да и язык мне откровенно не нравится, что бы не быть "слабым звеном" я принялся писать на fp. Первые эксперементы под win32 весьма успешны (хотя там кодя 4 строчки :-), под nix еще не проверялось.
На данном этапе я пишу некий загрузчик ресурсов, если любопытно. Исходник, с {$mode objfpc} (а оно нужно) компилируется нормально. Дальше компилируются Си'шный код, а вот когда все это .o собираются, оказывается что нет RTTI__SYSTEM_PCHAR. Потребность этой заразы возникла когда я описал на Pascal'е структуру (record) с полем типа PChar. Ладно. Я сделал свой PChar = ^Char (правда теперь hint выскакивает, мол шалю я с переопределением). Теперь все работает. Но чую я что что-то делаю не так. Видимо проект мне нужно собирать с RTL от FP? Как? system.o? 152Kb? Ненравится мне это, да и неполучилось с первого раза. Как вариант, можно делать динамические библиотеки, хотя не хотелось бы. Кстати как еще сделать что бы .ppu на свет не появлялся? Мне он не нужен.
Зарание спасибо.

..bw
bw
 

Сообщение bondlab » 23.11.2005 11:25:48

а в чем вопрос?
bondlab
незнакомец
 
Сообщения: 6
Зарегистрирован: 08.11.2005 13:10:07

Сообщение STAKANOV » 23.11.2005 12:13:40

Видимо проект мне нужно собирать с RTL от FP

ага

если FPC основной, то собираеншь все им, а код написанный на Си прицепляешь во время сборки, это из раздела "использование внешних библиотек" документации.

если ты пишешь вспомогательные модули, то
Я сделал свой PChar = ^Char

это те жертвы которые придется принести ;)

правда теперь hint выскакивает, мол шалю я с переопределением

а ты пути к RTL убери из файла конфигруации ;)
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Guest » 23.11.2005 13:01:15

bondlab
а в чем вопрос?
> Видимо проект мне нужно собирать с RTL от FP? Как? system.o? 152Kb?
> Кто как собирает проекты из исходников написанных на разных языках?
> Кстати как еще сделать что бы .ppu на свет не появлялся?

STAKANOV
использование внешних библиотек
Это получилось. С этим проблем нет. Но собирается все от gcc...
это те жертвы которые придется принести
Не хочу я :-). Ну не хочу я идти на жертвы. Почему никогда не обходится без жертв.
а ты пути к RTL убери из файла конфигруации
Любопытно. Попробую.

..bw
Guest
 

Сообщение STAKANOV » 23.11.2005 18:46:04

Не хочу я :-). Ну не хочу я идти на жертвы. Почему никогда не обходится без жертв

Мы тут немного поковырялись в потрохах - <a href='http://freepascal.ru/forum/index.php?showtopic=453' target='_blank'>http://freepascal.ru/forum/index.php?showtopic=453</a>

а можно еще писать на GPC тогда вообще пробем с GCC не возникнет :rolleyes:
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение bw » 24.11.2005 07:57:33

Установил fp2, теперь символы формируются совсем не так и при окончательной линковке описанные в сишном хедере процедуры (.h) не находятся. Символы fpc создает из имени модуля и, собственно, процедуры.
Как с ним дальше бороться? Как сделать что бы fpc делал такие же символы как и gcc?

..bw
bw
 

Сообщение PVOzerski » 24.11.2005 11:27:57

procedure MyProg(x: longint);stdcall;[public, alias:'_MyProg@4'];
begin

end;
PVOzerski
постоялец
 
Сообщения: 109
Зарегистрирован: 19.05.2005 13:45:10
Откуда: СПб

Сообщение bw » 24.11.2005 12:30:20

PVOzerski, спасибо. Хм. Квадратные скобки, public, я о таком не слышал. Полистать guide что ли.

А с таким кто-нибудь сталкивался:
> libpsystem.a(system0s748.o)(.text+0x68):system.pp: undefined reference to `asm_exit'
> libpsystem.a(system0s443.o)(.text+0xa):system.pp: undefined reference to `INITFINAL'
Это при линковке, разумеется.

Чего то мне эта фигня начинает надоедать. Попробую, пожалуй, динамически подключать свой код. Т.е. ".dll'ками".

..bw
bw
 

Сообщение STAKANOV » 24.11.2005 15:00:07

Как сделать что бы fpc делал такие же символы как и gcc?

как и было показано используя alias:'нужное имя';

Полистать guide что ли.

да, если ничего не помогло, то остается лишь прочитать инструкцию :D :D :D

А с таким кто-нибудь сталкивался:
> libpsystem.a(system0s748.o)(.text+0x68):system.pp: undefined reference to `asm_exit'

я не сталкивался, но это точно определено в инициализирующем коде fpc для win32 (.../rtl/win32/gprt.as)

Попробую, пожалуй, динамически подключать свой код. Т.е. ".dll'ками".

в случае если без RTL нельзя, то пожалуй это единственное решение ;)
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение noch » 25.11.2005 12:44:46

А все-таки почему не gpc?
Там же легче линковать с g++
Конечно, мне freepascal ближе но исходя из твоей задачи gpc снимает массу проблем ;)

gpc=gnu pascal compiler, это frontend к gcc, код генерирует gcc ;)

Он несколько совместим с borland pascal диалектом и совместим с iso pascal ;)


По моему для тебя идеально подходит ;)
Аватара пользователя
noch
постоялец
 
Сообщения: 145
Зарегистрирован: 07.06.2005 09:45:49
Откуда: Armenia

Сообщение bw » 25.11.2005 18:20:30

Не знаком с gpc. Где его кстати найти можно. Что-то типа gnu-pascal.de? Насколько я понял язык довольно беден. Посмотрим.

..bw
bw
 

Сообщение bw » 07.12.2005 11:53:50

Еще такой вопрос.
FP'шные интерфейсы под linux будут работать? Это те которые IUnknown и пр. Собственно не интересуют ни COM, ни DCOM, а интересует возможность использования интерфейсов внутри программы. Насколько я знаю это решается исключительно компилятором и от внешней среды (win/nix) исполнения не зависит.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Сообщение Иван Шихалев » 07.12.2005 13:51:22

FP'шные интерфейсы под linux будут работать?

Прекрасно работают
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение Двадцать бакинских » 30.01.2006 02:19:32

Ада!
Двадцать бакинских
 


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 70

Рейтинг@Mail.ru