Are you sure about the line number 3242 ?
Sorry - it hadn't occurred to me that Pg.c was (as Tux has just pointed out) a generated file.
The problem arises because of the declaration of static int errno; in Pg.h. (This declaration is made only on Windows.)
I would first try removing that declaration (line 14) from Pg.h and then rebuild DBD::Pg afresh.
Here's a simple demo of the problem:
UPDATE: In this demo script, I originally declared foo() as SV * foo().
I have now corrected that declaration to void foo().
use strict;
use warnings;
use Inline C => <<'END_OF_C';
static int errno;
void foo() {
printf("errno: %d\n", errno);
}
END_OF_C
foo();
On Windows, running that perl script with my Platform SDK compiler (14.00.40310.41), I get:
Microsoft (R) Program Maintenance Utility Version 7.00.8882
Copyright (C) Microsoft Corp 1988-2000. All rights reserved.
--snip--
cl -c -I"C:/_32/pscrpt/inline" -nologo -GF -W3 -MD -Zi -DNDEBUG
+-Ox -GL -fp:precise -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -DCONSERVA
+TIVE -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONT
+EXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -MD -Zi -DNDEBUG -Ox -GL -fp:pre
+cise -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" "-IC:\_64\ap1600\l
+ib\CORE" try_pl_3645.c
try_pl_3645.c
try_pl_3645.c(210) : error C2129: static function 'int *_errno(void)'
+declared but not defined
C:\_64\Platform_SDK\Include\crt\errno.h(54) : see declaration
+of '_errno'
NMAKE : fatal error U1077: 'cl' : return code '0x2'
Stop.
A problem was encountered while attempting to compile and install your
+ Inline
C code. The command that failed was:
C:\_64\PLATFO~1\Bin\nmake.exe > out.make 2>&1
The build directory was:
C:\_32\pscrpt\inline\_Inline\build\try_pl_3645
To debug the problem, cd to the build directory, and inspect the outpu
+t files.
at try.pl line 12.
...propagated at C:/_64/ap1600/site/lib/Inline/C.pm line 772.
BEGIN failed--compilation aborted at try.pl line 12.
I get the same problem with mingw (gcc) compilers - with slightly different error messages.
There's only the one instance of "errno" in the entire DBD::Pg source, so I'm guessing there's no harm in removing that one and only instance at line 14 of Pg.h.
Or am I missing something ?
Cheers, Rob |