[fpc-pascal] UDF+FREEBSD+FIREBIRD FPC generate wrong object file???
KES
kes-kes at yandex.ru
Sun Nov 16 21:25:39 CET 2008
Здравствуйте, Michael.
Вы писали 16 ноября 2008 г., 0:29:22:
MVC> On Sat, 15 Nov 2008, KES wrote:
>> Здравствуйте, Michael.
>>
>> Вы писали 15 ноября 2008 г., 23:28:10:
>>
>>
>>
>> MVC> On Sat, 15 Nov 2008, KES wrote:
>>
>> >> Здравствуйте
>> >>
>> >> h) select fntest() from rdb$database
>> >> i) invalid requiest BLR at offset 60
>> >> function FNTEST is not defined
>> >> module name or entrypoint could not be found
>> >>
>> >>
>> >> CONCLUSION: FPC generate wrong object file???
>>
>> MVC> Not necessarily. Please try to load the library from a plain C program.
>>
>> MVC> My guess is that dlopen() will return an error.
>>
>> MVC> Then do the same for the library with a pascal program.
>>
>> MVC> Michael.
>>
>> I do not know how to load the library from a plain C program. Can you
>> help me?
MVC> Something like this should do it:
home: >>cat testl.c
MVC> #include <dlfcn.h>
MVC> #include <stdio.h>
MVC> int main () {
MVC> void * p;
MVC> void * ps;
MVC> p=dlopen("testudf.so",RTLD_NOW);
MVC> if (p==NULL) {
MVC> printf("loading library failed %s\n",dlerror());
MVC> } else {
MVC> printf("loading library OK\n");
MVC> ps = dlsym(p,"fn_test");
MVC> if (ps==NULL) {
MVC> printf("symbol not found\n");
MVC> } else {
MVC> printf("Symbol found OK\n");
MVC> }
MVC> dlclose(p);
MVC> }
MVC> }
home: >>gcc -ldl testl.c
home: >>./a.out
MVC> loading library failed testudf.so: cannot open shared object file: No such file or directory
MVC> Of course, you must correct the names.
MVC> Michael.
home# ./a.out
loading library failed /usr/lib/libtestudf.so: Undefined symbol "main"
in output of nm libtetudf.so
I have noticed this:
0001d950 t gcc2_compiled.
U main
00039758 B operatingsystem_parameter_argc
"U main" what this mean??
Now I try your example for .so compiled by gcc
home# gcc -c testudf.c
home# gcc testudf.o -o testudf.so -shared
home# gcc so_load.c
The so_load.c file is test1.c
home# ./a.out
loading library failed Shared object "testudf.so" not found, required by "a.out"
home# cp testudf.so /usr/lib
home# ./a.out
loading library OK
Symbol found OK
home#
Any suggestions?
--
С уважением,
KES mailto:kes-kes at yandex.ru
More information about the fpc-pascal
mailing list