trifon писал(а):Код fpc использовать в gcc достаточно легко, для этого ...
Добрый день
trifon.
Попробовал как ты посоветвовал, но мне кажется у меня пока опыта мало. GCC ошибку выдает при линковке. Выдает что не могу определить функцию add_m в процедуре main.
Пример кода
файл Hello.c
- Код: Выделить всё
#include <stdio.h>
int main(void)
{
int a =2;
int b =3;
int c;
c=add_m(a,b);
printf("Privet. Hello world!\n");
printf("c= %i\n",c);
return(0);
}
Сгенерированный файл на FPC.
файл test_c.pas
- Код: Выделить всё
unit test_c;
interface
{
Automatically converted by H2Pas 1.0.0 from test_c.h
The following command line parameters were used:
test_c.h
}
{$IFDEF FPC}
{$PACKRECORDS C}
{$ENDIF}
{$ifndef _Included_test_c}
{$define _Included_test_c}
{ C++ extern C conditionnal removed }
function add_m(_para1:longint; _para2:longint):longint;
{ C++ end of extern C conditionnal removed }
{$endif}
implementation
function add_m(_para1:longint; _para2:longint):longint;
begin
{ You must implement this function }
result:=_para1+_para2;
end;
end.
Компилирую на паскале этот файл, получаю файл test_c.o
Далее компилирую на gcc
- Код: Выделить всё
gcc hello.c –c
и линкую
- Код: Выделить всё
gcc hello.o test_c.o –o prog
тут выдает ошибку что не может найти функцию add_m в процедуре main.
Пробовал разные варианты (менял код на с, провобовал объявлять extern, объявлял в файле *.h, и на паскале также - пробовал объявлять функцию в паскале как cdecl, менял опции компилятора FPC итд.
Все равно не смог линковать. Может я что то пропустил? Мне бы этот пример чтобы сработал, далее дело техники - добавлю свой код на паскале.
Версия FPC 2.0.4 под Дебиян. GCC кажется 4.1.3 ...
Спасибо заранее.