Am Freitag, den 12.12.2008, 13:10 +0200 schrieb KES: > Здравствуйте, Seth. > > > kes# fpc -Sgi -CX -Xs -XX -vewnhi -l -Fu. -olibtest.so test.lpr > Hint: Start of reading config file /usr/local/etc/fpc.cfg > Hint: End of reading config file /usr/local/etc/fpc.cfg > Free Pascal Compiler version 2.2.0 [2008/11/09] for i386 > Copyright (c) 1993-2007 by Florian Klaempfl > Target OS: FreeBSD/ELF for i386 > Compiling test.lpr > Linking libtest.so > 20 lines compiled, 2.7 sec > 2 hint(s) issued > Для продолжения нажмите любую клавишу... > kes# cp libtest.so /usr/lib/ > kes# gcc -o ctest -ltest ctest.c > /var/tmp//ccFJez1e.o(.text+0x20): In function `main': > : undefined reference to `SquareNumber' > /usr/lib/libtest.so: undefined reference to `__fpucw' > Для продолжения нажмите любую клавишу...
Let me guess, you're using FreeBSD? $ sh build.sh Hint: Start of reading config file /home/marc/.fpc.cfg Hint: End of reading config file /home/marc/.fpc.cfg Free Pascal Compiler version 2.0.4 [2007/01/19] for i386 Copyright (c) 1993-2006 by Florian Klaempfl Target OS: FreeBSD/ELF for i386 Compiling test.lpr Linking libtest.so 20 Lines compiled, 0.7 sec /tmp/ccCO3Bkd.o: In function `main': /tmp/ccCO3Bkd.o(.text+0x13): undefined reference to `SquareNumber' ./libtest.so: undefined reference to `__fpucw' $ cat build.sh # !/bin/sh fpc -Sgi -CX -Xs -XX -vewnhi -l -Fu. -otest.so test.lpr gcc -o ctest -Wl,-L. -ltest ctest.c $ uname -mrs FreeBSD 4.11-STABLE i386 It was mentioned in this thread, it's a known issue for FreeBSD. Marc -- A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing? A: Top-posting. Q: What is the most annoying thing on usenet and in e-mail? > > Вы писали 12 декабря 2008 г., 1:54:51: > > SG> I do it all the time. It works fine in Linux as of 2.2.2. There was a > SG> problem in 2.2.0 where initialization and finalization code of units > SG> in your uses section wouldn't get called, but they do now. > > SG> ------- test.lpr ------------------------------- > SG> library test; > > SG> {$mode objfpc}{$H+} > > SG> uses > SG> Classes, SysUtils; > > SG> function SquareNumber(const input : integer) : integer; cdecl; > SG> begin > SG> writeln('libtest.so SquareNumber'); > SG> result := input * input; > SG> end; > > SG> exports > SG> SquareNumber name 'SquareNumber'; > > SG> begin > SG> writeln('libtest.so initialization'); > > SG> end. > SG> ------------------------------------------------ > > SG> ------- ctest.c ------------------------------- > SG> #include <stdio.h> > > SG> int SquareNumber(const int input); > > SG> main() > SG> { > SG> int input; > SG> int output; > > SG> input = 4; > SG> output = SquareNumber(4); > > SG> printf("%i squared is %i\n", input, output); > SG> } > SG> ----------------------------------------------- > > SG> To build the .so: > > SG> fpc -Sgi -CX -Xs -XX -vewnhi -l -Fu. -olibtest.so test.lpr > > SG> To build the c program (make sure the .so is in your link path) > > SG> gcc -o ctest -ltest ctest.c > > SG> Then run it: > > SG> libtest.so initialization > SG> libtest.so SquareNumber > SG> 4 squared is 16 > > SG> -SG > > SG> ======================== > SG> Computer over. Virus = very yes. > > SG> Seth Grover > SG> sethdgrover[at]gmail[dot]com > SG> _______________________________________________ > SG> fpc-pascal maillist - fpc-pascal@lists.freepascal.org > SG> http://lists.freepascal.org/mailman/listinfo/fpc-pascal > > > _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal