[poppler] make test fails: perf-test.cc "ambiguates old declaration"

John L. Poole jlpoole56 at gmail.com
Mon Jul 30 15:34:13 PDT 2012


I am trying to build poppler-0.20.2 on Windows 7 using MinGW32 (20120426).

gcc.exe (rubenvb-4.7.0) 4.7.0

My MingGW was built by selecting the minimal install and not selecting 
any compiler, then
installing the compilers from the mingw-w64project per the build recipe at
http://ingar.satgnu.net/devenv/mingw32/base.html

The main project builds, the test phase fails.  There were some warnings 
on the initial build,
I can rerun compile and post to pastebin if anyone feels they would be 
helpful.

Here's my output:

============ START OUTPUT =============================
jlpoole at jlpoole-PC /build32/poppler-0.20.2$ make
make  all-recursive
make[1]: Entering directory `/build32/poppler-0.20.2'
Making all in goo
make[2]: Entering directory `/build32/poppler-0.20.2/goo'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/build32/poppler-0.20.2/goo'
Making all in fofi
make[2]: Entering directory `/build32/poppler-0.20.2/fofi'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/build32/poppler-0.20.2/fofi'
Making all in splash
make[2]: Entering directory `/build32/poppler-0.20.2/splash'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/build32/poppler-0.20.2/splash'
Making all in poppler
make[2]: Entering directory `/build32/poppler-0.20.2/poppler'
make  all-am
make[3]: Entering directory `/build32/poppler-0.20.2/poppler'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/build32/poppler-0.20.2/poppler'
make[2]: Leaving directory `/build32/poppler-0.20.2/poppler'
Making all in utils
make[2]: Entering directory `/build32/poppler-0.20.2/utils'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/build32/poppler-0.20.2/utils'
Making all in test
make[2]: Entering directory `/build32/poppler-0.20.2/test'
   CXX    perf-test.o
perf-test.cc: In function 'void strcpy_s(char*, size_t, const char*)':
perf-test.cc:329:58: error: new declaration 'void strcpy_s(char*, 
size_t, const char*)'
In file included from 
c:\mingw1\mingw32\bin\../lib/gcc/i686-w64-mingw32/4.7.0/../../../../i686-w64-mingw32/include/string.h:176:0,
                  from 
c:\mingw1\mingw32\bin\../lib/gcc/i686-w64-mingw32/4.7.0/../../../../i686-w64-mingw32/include/guiddef.h:135,
                  from 
c:\mingw1\mingw32\bin\../lib/gcc/i686-w64-mingw32/4.7.0/../../../../i686-w64-mingw32/include/winnt.h:454,
                  from 
c:\mingw1\mingw32\bin\../lib/gcc/i686-w64-mingw32/4.7.0/../../../../i686-w64-mingw32/include/windef.h:137,
                  from 
c:\mingw1\mingw32\bin\../lib/gcc/i686-w64-mingw32/4.7.0/../../../../i686-w64-mingw32/include/windows.h:59,
                  from perf-test.cc:24:
c:\mingw1\mingw32\bin\../lib/gcc/i686-w64-mingw32/4.7.0/../../../../i686-w64-mingw32/include/sec_api/string_s.h:27:27: 
error: ambiguates old declaration 'errno_t strcpy_s(char*, size_t, const 
char*)'
make[2]: *** [perf-test.o] Error 1
make[2]: Leaving directory `/build32/poppler-0.20.2/test'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/build32/poppler-0.20.2'
make: *** [all] Error 2
jlpoole at jlpoole-PC /build32/poppler-0.20.2$
============ END OUTPUT =============================

Here's the source being referenced:
======== Source Referenced START ==========
#ifndef _MSC_VER
void strcpy_s(char* dst, size_t dst_size, const char* src)
{
     size_t src_size = strlen(src) + 1;
     if (src_size <= dst_size)
         memcpy(dst, src, src_size);
     else {
         if (dst_size > 0) {
             memcpy(dst, src, dst_size);
             dst[dst_size-1] = 0;
         }
     }
}

void strcat_s(char *dst, size_t dst_size, const char* src)
{
     size_t dst_len = strlen(dst);
     if (dst_len >= dst_size) {
         if (dst_size > 0)
             dst[dst_size-1] = 0;
         return;
     }
     strcpy_s(dst+dst_len, dst_size - dst_len, src);
}
#endif
======== Source Referenced END ==========

Here's line 29 from 
C:\MinGW1\mingw32\i686-w64-mingw32\include\sec_api\string_s.h
=== string_s.h  START ================================
   _CRTIMP errno_t __cdecl strcpy_s(char *_Dst, size_t _SizeInBytes, 
const char *_Src);
=== string_s.h  END ==================================

I'm guessing that using gcc 4.7.0 is bringing to light an incompatability?

Is this a bug and is there a work-around?

John


-------------- next part --------------
A non-text attachment was scrubbed...
Name: jlpoole56.vcf
Type: text/x-vcard
Size: 164 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/poppler/attachments/20120730/9c324e90/attachment.vcf>


More information about the poppler mailing list