Hi, I see many messages about linking libraries that were written in C language. I do it at run time. This message is for those that are not so familiar with linux system programming. Here is an exampe:
Supose that I want to use the the function "ibdev" in the module "libgpib.so". From the file "libgpib.h" I could learn more about procedure parameters. Then I found the coresponding types in pascal and wrote my own pascal program: ... uses libc; ... type Tibdev = function(board_index,pad,sad,timeout,send_eoi,eoi:smallint):smallint;cdecl; ... var HandleLIBGPIB : pointer; ibdev : Tibdev; ... const GPIBLIBRARYNAME : pchar = '/usr/local/lib/libgpib.so'; ... begin ... HandleLIBGPIB := dlopen(GPIBLIBRARYNAME,RTLD_NOW); if (HandleLIBGPIB = nil) then begin showmessage('Library file not found: '+GPIBLIBRARYNAME); exit; end; ... ibdev := Tibdev(dlsym(HandleLIBGPIB,'ibdev')); if @ibdev = nil then exit; ... Then the procedure "ibdev" can be used normally. I think that: 1 - It is easy to check and take action if the library is not loaded, properly. My program is more robust. 2 - I find that it is not easy to understand the "C" types sometimes. This "dynamic" techniqe can be used to test and debug all the procedures one by one. Also you can declare only the procedures that you will be using, and not bother about the ones that you do not understand. I hope that this can be usefull. Thank you Alain Michaud amiso rubidium _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal