Динамическая библиотека:
- Код: Выделить всё
library test;
procedure func; stdcall;
begin
end;
exports
func;
end.
Программа:
- Код: Выделить всё
uses
DynLibs;
var
Handle: TLibHandle;
begin
Handle := LoadLibrary(ParamStr(1));
if Handle = NilHandle then
Writeln('Cannot load lib ', ParamStr(1))
else
Writeln('Libary loaded');
FreeLibrary(FHandle);
end.
Компиляция и запуск:
- Код: Выделить всё
doj@dev:~/devel/lib$ fpc -Cg test.dpr
Free Pascal Compiler version 2.4.0-2 [2010/02/20] for arm
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Linux for ARMEL
Compiling test.dpr
Assembling test
Linking libtest.so
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
10 lines compiled, 0.6 sec
doj@dev:~/devel/lib$ fpc prog.dpr
Free Pascal Compiler version 2.4.0-2 [2010/02/20] for arm
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Linux for ARMEL
Compiling prog.dpr
Assembling program
Linking prog
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
18 lines compiled, 0.8 sec
doj@dev:~/devel/lib$ ./prog /usr/lib/libm.so
Library loaded
doj@dev:~/devel/lib$ ./prog libtest.so
Cannot load lib libtest.so
Runtime error 216 at $400C1FBC
$400C1FBC
$40312508
Видно, что сторонние библиотеки из /usr/lib/ грузятся, а только что созданные — нет. Операционная система — Debian, процессор — arm. Подозреваю, что это баг в компиляторе под arm.
Правильно ли я компилирую? Никто с подобным не сталкивался?