Error: Undefined symbol:
   IPP__IPPITHRESHOLD_LTVAL_8U_C1IR$PIPP8U$LONGINT$IPPISIZE$BYTE$BYTE$$IPPSTATUS

       test 2: put the library implementation below function
       declaration, eg:

       function _ippiThreshold_LTValGTVal_8u_C1IR(pSrcDst: PIpp8u;
       srcDstStep: int;
               roiSize: IppiSize; thresholdLT: Ipp8u; valueLT: Ipp8u;
       thresholdGT: Ipp8u;
               valueGT: Ipp8u): IppStatus; external;
       {$linklib libippi}

   here I get:
      Error: Undefined symbol:
   IPP__IPPITHRESHOLD_LTVAL_8U_C1IR$PIPP8U$LONGINT$IPPISIZE$BYTE$BYTE$$IPPSTATUS
   (same error if I add: {$linklib ippi} or {$linklib libippi} ...
ippi.lib and libippi.a are in directory where -Fl points)

       fix 1: check which convention your library was compiled,

   I think it is stdcall and I have this calling convention there
   (extdecl is macro: {$DEFINE extdecl:=stdcall}  ):
      function _ippiThreshold_LTVal_8u_C1IR(pSrcDst: PIpp8u;srcDstStep:
   int;  roiSize: IppiSize; threshold: Ipp8u; value: Ipp8u): IppStatus;
       extdecl; external;


    Awesome. Now we need to check how libippi had exported its
    symbols. :-) For example, to check the symbols from the libfoo.a
    sent in my previous message:

    $ objdump -t libfoo.a
    In archive libfoo.a:

    libfoo.o:     file format pe-i386

    SYMBOL TABLE:
    [  0](sec -2)(fl 0x00)(ty   0)(scl 103) (nx 1) 0x00000000 foo.c
    File
    *[  2](sec  1)(fl 0x00)(ty  20)(scl   2) (nx 1) 0x00000000 _bar*
    AUX tagndx 0 ttlsiz 0x0 lnnos 0 next 0
    [  4](sec  1)(fl 0x00)(ty   0)(scl   3) (nx 1) 0x00000000 .text
    AUX scnlen 0xa nreloc 1 nlnno 0
    [  6](sec  2)(fl 0x00)(ty   0)(scl   3) (nx 1) 0x00000000 .data
    AUX scnlen 0x0 nreloc 0 nlnno 0
    [  8](sec  3)(fl 0x00)(ty   0)(scl   3) (nx 1) 0x00000000 .bss
    AUX scnlen 0x0 nreloc 0 nlnno 0
    [ 10](sec  4)(fl 0x00)(ty   0)(scl   3) (nx 1) 0x00000000 .rdata
    AUX scnlen 0x4 nreloc 0 nlnno 0
    [ 12](sec  5)(fl 0x00)(ty   0)(scl   3) (nx 1) 0x00000000 .rdata$zzz
    AUX scnlen 0x2a nreloc 0 nlnno 0
    [ 14](sec  6)(fl 0x00)(ty   0)(scl   3) (nx 1) 0x00000000 .eh_frame
    AUX scnlen 0x38 nreloc 1 nlnno 0

    Notice the _bar, now you need to check if libippi exported it as
    ippithreshold_ltvalgtval_8u_c1ir, _ippithreshold_ltvalgtval_8u_c1ir or
    ipp__ippithreshold_ltval_8u_c1ir. :-)


I forgot a question, could you send your ippi .a files for us? If so, I can try a test here. :-)

Yes of course: I have uploaded them here http://uschovna.zoznam.sk/download?code=1342688547227-EZyyeVzToDVVkkbJNCbN But be aware of that I am on Windows, not Linux (Despite this I have added to ZIP also .a files as they are installed by Intel into direcotry "Linux". In direcory "Windows" are installed only .lib files). If I can repeat my question: Can I use ".a" libraries also on Windows ? If not can I use ".lib" created by C/C++ (I do not know how they are build)
Thank you
-Laco.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to