Подключение *.а файла к проекту

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

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

Подключение *.а файла к проекту

Сообщение Bishop » 31.08.2009 17:22:23

Пытаюсь подключить к своему проекту библиотеку lzo 2.03. Собираю её с помощью mingw-w64_x86-64_mingw32_4.4.0-1 и получаю файл liblzo2.a (150кб). Линкую его со своей программой с помощью дерективы {$LINKLIB liblzo2.a}. При компиляции выдаёт следующие ошибки:
Код: Выделить всё
Test.lpr(24,1) Error: Undefined symbol: _memset
Test.lpr(24,1) Error: Undefined symbol: _memcpy

Пробовал подключать libgcc.а, libmsctf.a, libmsvcrt.a - не помогло. Возможно я что-то делаю не так или беру либы не оттуда? Или необходимо при компиляции посылать дополнительные параметры gcc или ar для того, чтобы нужные функции были включены в liblzo2.a.
Использую Lazarus из SVN и FPC 2.3.1 примерно месячной давности (из состава CodeTyphon 0.966). Платформа win64
Bishop
новенький
 
Сообщения: 23
Зарегистрирован: 27.07.2009 18:47:20

Re: Подключение *.а файла к проекту

Сообщение скалогрыз » 31.08.2009 17:44:48

линковать нужно с libc
но т.к. libc это зло (заочно!) то лучше описать эти функции самостоятельно в коде:
Код: Выделить всё
interface
...
procedure memset(P: Pointer; B: Byte; count: Integer);cdecl;
procedure memcpy(dest, source: Pointer; count: Integer);cdecl;

implementation
...
procedure memset(P: Pointer; B: Byte; count: Integer);cdecl;
begin
  FillChar(P^, count, B);
end;

procedure memcpy(dest, source: Pointer; count: Integer);cdecl;
begin
  Move(source^, dest^, count);
end;


если не поможет, то повторить попытку, уже так:

Код: Выделить всё
implementation
...
procedure memset(P: Pointer; B: Byte; count: Integer);cdecl; [public,alias:'_memset'];
begin
  FillChar(P^, count, B);
end;

procedure memcpy(dest, source: Pointer; count: Integer);cdecl; [public,alias:'_memcpy'];
begin
  Move(source^, dest^, count);
end;
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Подключение *.а файла к проекту

Сообщение Bishop » 01.09.2009 22:38:31

Спасибо, второй метод помог. Но всёже есть одно НО (чтобы в дальнейшем знать).
Нигде не могу найти этот самый libc.a. Скорее всего не там ищу. Подскажите плиз где его нужно искать в составе mingw? (а ещё лучше где правильно качать этот самый mingw для win64, а то вдруг не там качаю)
Bishop
новенький
 
Сообщения: 23
Зарегистрирован: 27.07.2009 18:47:20


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru