I can't create the makefile target oracle.dll. It took me only a few
minutes to discover relevant nmake arguments that would fix most of my
problems but there is still one unresolved external symbol. I can't get
past it. Here's the error:
dbdimp.obj : error LNK2019: unresolved external symbol __imp__strcmpi
referenced in function _ora_init
blib\arch\auto\DBD\Oracle\Oracle.dll : fatal error LNK1120: 1 unresolved
externals
NMAKE : fatal error U1077: 'link' : return code '0x460'
I tried a number of additional linik arguments to see if I could find a
library that defined strcmpi but I couldn't.
The instructions that I found in README indicate that I'm supposed to
execute
perl Makefile.PL -s __imp__strcmpi
but after it failed and after using perl -d I discovered that the
function symbol_search() assumes a UNIX host with SHELL=/bin/sh or other
sh-compatible variant. I modifed the symbol_search() procedure to
execute the command with sh -c. At least this way, if someone installed
cygwin they will get some output.
Following is the all of the output I could according to the this
paragraph is the output I get after successfully making, testing, and
installing DBI 1.40.
cl
Microsoft (R) 32-bit C/C++ Standard Compiler Version 13.10.3077 for
80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
link
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
perl -V
Summary of my perl5 (revision 5 version 8 subversion 0) configuration:
Platform:
osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread
uname=''
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
usethreads=undef use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cl', ccflags ='-nologo -Gf -W3 -MD -Zi -DNDEBUG -O1 -DWIN32
-D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO
-DPERL_MSVCRT_READFIX',
optimize='-MD -Zi -DNDEBUG -O1',
cppflags='-DWIN32'
ccversion='', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf
-libpath:"C:\Perl\lib\CORE" -machine:x86'
libpth="C:\Perl\lib\CORE"
libs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib
winmm.lib version.lib odbc32.lib odbccp32.l
ib msvcrt.lib
perllibs= oldnames.lib kernel32.lib user32.lib gdi32.lib
winspool.lib comdlg32.lib advapi32.lib shell32.
lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib
winmm.lib version.lib odbc32.lib odbccp
32.lib msvcrt.lib
libc=msvcrt.lib, so=dll, useshrplib=yes, libperl=perl58.lib
gnulibc_version='undef'
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug
-opt:ref,icf -libpath:"C:\Perl\lib\CORE" -m
achine:x86'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES
PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
Locally applied patches:
ActivePerl Build 806
Built under MSWin32
Compiled at Mar 31 2003 00:45:44
%ENV:
PERLDB_OPTS="RemotePort=127.0.0.1:2000"
@INC:
C:/Perl/lib
C:/Perl/site/lib
.
perl Makefile.PL
Using DBI 1.40 (for perl 5.008 on MSWin32-x86-multi-thread) installed in
C:/Perl/site/lib/auto/DBI
Configuring DBD::Oracle ...
>>> Remember to actually *READ* the README file!
Especially if you have any problems.
Using Oracle in c:/progra~1/oracle
Found oci directory
Using OCI directory 'oci'
Found oci/lib/MSVC/oci.lib library
Found oci/lib/MSVC/ociw32.lib library
Found oci/lib/MSVC/oramts.lib library
Found oci/lib/MSVC/oraocci9.lib library
Using oci/lib/MSVC/OCI.lib
Checking for functioning wait.ph
System: perl5.008
Compiler: cl -MD -Zi -DNDEBUG -O1 -nologo -Gf -W3 -MD -Zi -DNDEBUG -O1
-DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE
_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO
-DPERL_MSVCRT_READFIX
Linker: <ld not found>
Sysliblist:
Checking if your kit is complete...
Looks good
Note (probably harmless): No library found for 'oldnames.lib'
Note (probably harmless): No library found for 'kernel32.lib'
Note (probably harmless): No library found for 'user32.lib'
Note (probably harmless): No library found for 'gdi32.lib'
Note (probably harmless): No library found for 'winspool.lib'
Note (probably harmless): No library found for 'comdlg32.lib'
Note (probably harmless): No library found for 'advapi32.lib'
Note (probably harmless): No library found for 'shell32.lib'
Note (probably harmless): No library found for 'ole32.lib'
Note (probably harmless): No library found for 'oleaut32.lib'
Note (probably harmless): No library found for 'netapi32.lib'
Note (probably harmless): No library found for 'uuid.lib'
Note (probably harmless): No library found for 'wsock32.lib'
Note (probably harmless): No library found for 'mpr.lib'
Note (probably harmless): No library found for 'winmm.lib'
Note (probably harmless): No library found for 'version.lib'
Note (probably harmless): No library found for 'odbc32.lib'
Note (probably harmless): No library found for 'odbccp32.lib'
Note (probably harmless): No library found for 'msvcrt.lib'
LD_RUN_PATH=c:/progra~1/oracle/lib:c:/progra~1/oracle/rdbms/lib
Using DBD::Oracle 1.15.
Using DBD::Oracle 1.15.
Using DBI 1.40 (for perl 5.008 on MSWin32-x86-multi-thread) installed in
C:/Perl/site/lib/auto/DBI
Writing Makefile for DBD::Oracle
*** If you have problems...
read all the log printed above, and the README and README.help
files.
(Of course, you have read README by now anyway, haven't you?)
$ nmake "INC=/I..\dbi-1.40 /I%VC7%\include /I%VC7%\platformsdk\include
/I%ORACLE_HOME%\oci\include" "OTHERLDFL
AGS=-libpath:%ORACLE_HOME%\lib %VC7%\PlatformSDK\lib\kernel32.lib
%VC7%\lib\msvcrt.lib"
Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
cp Oracle.h blib\arch\auto\DBD\Oracle/Oracle.h
cp Oracle.pm blib\lib\DBD\Oracle.pm
cp oraperl.ph blib\lib/oraperl.ph
cp dbdimp.h blib\arch\auto\DBD\Oracle/dbdimp.h
cp ocitrace.h blib\arch\auto\DBD\Oracle/ocitrace.h
cp Oraperl.pm blib\lib/Oraperl.pm
cp lib/DBD/Oracle/GetInfo.pm blib\lib\DBD/Oracle/GetInfo.pm
cp mk.pm blib\arch\auto\DBD\Oracle/mk.pm
rem
rem
C:\Perl\bin\perl.exe -p -e "s/~DRIVER~/Oracle/g"
C:/Perl/site/lib/auto/DBI/Driver.xst > Oracle.xsi
C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils/xsubpp -typemap
C:\Perl\lib\ExtUtils\typemap -typemap typem
ap Oracle.xs > Oracle.xsc && C:\Perl\bin\perl.exe -MExtUtils::Command
-e mv Oracle.xsc Oracle.c
cl -c /I..\dbi-1.40 /Ic:\progra~1\micros~1.net\vc7\include
/Ic:\progra~1\micros~1.net\vc7\platformsdk
\include /Ic:\progra~1\oracle\oci\include -nologo -Gf -W3 -MD -Zi
-DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT
-DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
-DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DND
EBUG -O1 -DVERSION=\"1.15\" -DXS_VERSION=\"1.15\"
"-IC:\Perl\lib\CORE" -DUTF8_SUPPORT Oracle.c
cl : Command line warning D4029 : optimization is not available in the
standard edition compiler
Oracle.c
c1 : warning C4349: /Gf is deprecated and will not be supported in
future versions of Visual C++; remove /Gf o
r use /GF instead
cl -c /I..\dbi-1.40 /Ic:\progra~1\micros~1.net\vc7\include
/Ic:\progra~1\micros~1.net\vc7\platformsdk
\include /Ic:\progra~1\oracle\oci\include -nologo -Gf -W3 -MD -Zi
-DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT
-DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
-DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DND
EBUG -O1 -DVERSION=\"1.15\" -DXS_VERSION=\"1.15\"
"-IC:\Perl\lib\CORE" -DUTF8_SUPPORT dbdimp.c
cl : Command line warning D4029 : optimization is not available in the
standard edition compiler
dbdimp.c
c1 : warning C4349: /Gf is deprecated and will not be supported in
future versions of Visual C++; remove /Gf o
r use /GF instead
dbdimp.c(1101) : warning C4018: '<' : signed/unsigned mismatch
dbdimp.c(1101) : warning C4018: '<' : signed/unsigned mismatch
cl -c /I..\dbi-1.40 /Ic:\progra~1\micros~1.net\vc7\include
/Ic:\progra~1\micros~1.net\vc7\platformsdk
\include /Ic:\progra~1\oracle\oci\include -nologo -Gf -W3 -MD -Zi
-DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT
-DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
-DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DND
EBUG -O1 -DVERSION=\"1.15\" -DXS_VERSION=\"1.15\"
"-IC:\Perl\lib\CORE" -DUTF8_SUPPORT oci7.c
cl : Command line warning D4029 : optimization is not available in the
standard edition compiler
oci7.c
c1 : warning C4349: /Gf is deprecated and will not be supported in
future versions of Visual C++; remove /Gf o
r use /GF instead
cl -c /I..\dbi-1.40 /Ic:\progra~1\micros~1.net\vc7\include
/Ic:\progra~1\micros~1.net\vc7\platformsdk
\include /Ic:\progra~1\oracle\oci\include -nologo -Gf -W3 -MD -Zi
-DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT
-DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
-DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DND
EBUG -O1 -DVERSION=\"1.15\" -DXS_VERSION=\"1.15\"
"-IC:\Perl\lib\CORE" -DUTF8_SUPPORT oci8.c
cl : Command line warning D4029 : optimization is not available in the
standard edition compiler
oci8.c
c1 : warning C4349: /Gf is deprecated and will not be supported in
future versions of Visual C++; remove /Gf o
r use /GF instead
oci8.c(666) : warning C4018: '>' : signed/unsigned mismatch
oci8.c(749) : warning C4018: '>' : signed/unsigned mismatch
oci8.c(1032) : warning C4018: '<=' : signed/unsigned mismatch
oci8.c(1209) : warning C4018: '<=' : signed/unsigned mismatch
"Running Mkbootstrap for DBD::Oracle ()"
C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 Oracle.bs
C:\Perl\bin\perl.exe -MExtUtils::Mksymlists -e
"Mksymlists('NAME'=>\"DBD::Oracle\", 'DLBASE' => 'Orac
le', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS'
=> []);"
link -out:blib\arch\auto\DBD\Oracle\Oracle.dll -dll -nologo
-nodefaultlib -debug -opt:ref,icf -libpat
h:"C:\Perl\lib\CORE" -machine:x86 Oracle.obj dbdimp.obj oci7.obj
oci8.obj -libpath:c:\progra~1\oracle\lib
c:\progra~1\micros~1.net\vc7\PlatformSDK\lib\kernel32.lib
c:\progra~1\micros~1.net\vc7\lib\msvcrt.lib C:\Perl
\lib\CORE\perl58.lib c:\progra~1\oracle\oci\LIB\MSVC\OCI.lib
-def:Oracle.def
Creating library blib\arch\auto\DBD\Oracle\Oracle.lib and object
blib\arch\auto\DBD\Oracle\Oracle.exp
dbdimp.obj : error LNK2019: unresolved external symbol __imp__strcmpi
referenced in function _ora_init
blib\arch\auto\DBD\Oracle\Oracle.dll : fatal error LNK1120: 1 unresolved
externals
NMAKE : fatal error U1077: 'link' : return code '0x460'
Stop.
perl Makefile.PL -S __imp__strcmpi
Using DBI 1.40 (for perl 5.008 on MSWin32-x86-multi-thread) installed in
C:/Perl/site/lib/auto/DB
Configuring DBD::Oracle ...
>>> Remember to actually *READ* the README file!
Especially if you have any problems.
Using Oracle in c:/progra~1/oracle
Searching for symbol 'strcmpi' in c:/progra~1/oracle ...
searching oracle lib/oragslavl9.a ...
searching oracle lib/oragslber_s9.a ...
searching oracle lib/oragsldb9.a ...
searching oracle lib/oragslmt9.a ...
searching oracle lib/oragslr9.a ...
searching oracle lib/oragslsg9.a ...
searching oracle lib/oragslssb9.a ...
searching oracle lib/oragslssf9.a ...
searching oracle lib/oraldapclnt9.a ...
searching oracle lib/oraldapjclnt9.a ...
searching oracle lib/orasgsl_s9.a ...
searching oracle lib/*.dll ...
nm: lib/*.dll: No such file or directory
searching oracle */lib/*.[ao] ...
nm: */lib/*.[ao]: No such file or directory
Searching for symbol 'strcmpi' in "C:\Perl\lib\CORE" ...
searching C:\Perl\lib\CORE/lib*.dll ...
nm: C:\Perl\lib\CORE/lib*.dll: No such file or directory
searching C:\Perl\lib\CORE/lib*.a ...
nm: C:\Perl\lib\CORE/lib*.a: No such file or directory
Search done.
(Please only include the 'interesting' parts when mailing.)
Jeff Holt
Hotsos Enterprises, Ltd.
http://www.hotsos.com <http://www.hotsos.com/>
Upcoming events at http://www.hotsos.com/education/schedule.html