Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: Problem Installing DBD::Informix on Windows 7 using AS Perl 5.8.9

by roho (Bishop)
on Aug 20, 2012 at 17:39 UTC ( [id://988481]=note: print w/replies, xml ) Need Help??


in reply to Problem Installing DBD::Informix on Windows 7 using AS Perl 5.8.9

Calling all C programmers! After resolving the "'INFORMIXC' is not recognized as an internal or exter command" issue, the problem has boiled down to compile errors (unresolved external symbols). I need to get past the compile and link errors produced by nmake so I can do an nmake install and start using DBD::Informix, but it's been over 15 years since I worked with C. Any help would be most apprecidated. Here is the output from my latest attempt at running nmake.The "unresolved" error messages are at the bottom:

nmake Microsoft (R) Program Maintenance Utility Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. cl -c -IC:\PROGRA~2\IBM\Informix\11.70/incl/esql -IC:\Perl\li +b/auto/DBI -IC:\Perl\site\lib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib +/auto/DBI -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -D +HAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_ +INC -DPERL_ IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFI +X -MD -Zi -DNDEBUG -O1 -DVERSION=\"2011.0612\" -DXS_VERSION=\"201 +1.0612\" " -IC:\Perl\lib\CORE" -DESQLC_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_ +H -DESQLC_IFX_LOC_T Informix.c Informix.c C:\Perl\lib\CORE\sys/socket.h(32) : warning C4005: 'ENOTSOCK' : macro +redefinition c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\errno.h(120) : see previous definition of 'ENOTSOCK' C:\Perl\lib\auto\DBI\Driver_xst.h(65) : warning C4996: 'sprintf': This + function or variable may be unsafe. Consider using sprintf_s instead +. To disabl e deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for detail +s. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' C:\Perl\lib\auto\DBI\Driver_xst.h(92) : warning C4996: 'sprintf': This + function or variable may be unsafe. Consider using sprintf_s instead +. To disabl e deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for detail +s. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' C:\PROGRA~2\IBM\Informix\11.70\bin\ESQL.EXE -c -IC:\PROGRA~2 +\IBM\Informix\11.70/incl/esql -IC:\Perl\lib/auto/DBI -IC:\Perl\site\l +ib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib/auto/DBI -cc -nologo -GF -W3 -MD -Zi - +DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HAS +H_SEED -DUS E_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_I +MPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 + -DVERSIO N=\"2011.0612\" -DXS_VERSION=\"2011.0612\" -IC:\Perl\lib\CORE -DESQL +C_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_H -DESQLC_IFX_LOC_T dbdimp +.ec IBM Informix CSDK Version 3.70, IBM Informix-ESQL Version 3.70.TC5 dbdimp.c C:\Perl\lib\CORE\sys/socket.h(32) : warning C4005: 'ENOTSOCK' : macro +redefinition c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\errno.h(120) : see previous definition of 'ENOTSOCK' dbdimp.ec(147) : warning C4996: '_vsnprintf': This function or variabl +e may be unsafe. Consider using _vsnprintf_s instead. To disable depr +ecation, us e _CRT_SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(363) : see declaration of '_vsnprintf' dbdimp.ec(264) : warning C4996: 'strcpy': This function or variable ma +y be unsafe. Consider using strcpy_s instead. To disable deprecation, + use _CRT_S ECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' dbdimp.ec(265) : warning C4996: 'sprintf': This function or variable m +ay be unsafe. Consider using sprintf_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(266) : warning C4996: 'sprintf': This function or variable m +ay be unsafe. Consider using sprintf_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(272) : warning C4996: 'strcpy': This function or variable ma +y be unsafe. Consider using strcpy_s instead. To disable deprecation, + use _CRT_S ECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' dbdimp.ec(273) : warning C4996: 'sprintf': This function or variable m +ay be unsafe. Consider using sprintf_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(274) : warning C4996: 'sprintf': This function or variable m +ay be unsafe. Consider using sprintf_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(295) : warning C4996: 'strcpy': This function or variable ma +y be unsafe. Consider using strcpy_s instead. To disable deprecation, + use _CRT_S ECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' dbdimp.ec(296) : warning C4996: 'strcpy': This function or variable ma +y be unsafe. Consider using strcpy_s instead. To disable deprecation, + use _CRT_S ECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' dbdimp.ec(339) : warning C4996: 'strncpy': This function or variable m +ay be unsafe. Consider using strncpy_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(188) : see declaration of 'strncpy' dbdimp.ec(378) : warning C4996: 'sprintf': This function or variable m +ay be unsafe. Consider using sprintf_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(427) : warning C4996: 'strcpy': This function or variable ma +y be unsafe. Consider using strcpy_s instead. To disable deprecation, + use _CRT_S ECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' dbdimp.ec(431) : warning C4996: 'strcat': This function or variable ma +y be unsafe. Consider using strcat_s instead. To disable deprecation, + use _CRT_S ECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(110) : see declaration of 'strcat' dbdimp.ec(953) : warning C4996: 'sprintf': This function or variable m +ay be unsafe. Consider using sprintf_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(954) : warning C4996: 'sprintf': This function or variable m +ay be unsafe. Consider using sprintf_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(955) : warning C4996: 'sprintf': This function or variable m +ay be unsafe. Consider using sprintf_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(956) : warning C4996: 'sprintf': This function or variable m +ay be unsafe. Consider using sprintf_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(2036) : warning C4996: 'strcpy': This function or variable m +ay be unsafe. Consider using strcpy_s instead. To disable deprecation +, use _CRT_ SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' dbdimp.ec(2037) : warning C4996: 'strcpy': This function or variable m +ay be unsafe. Consider using strcpy_s instead. To disable deprecation +, use _CRT_ SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' dbdimp.ec(2038) : warning C4996: 'strcpy': This function or variable m +ay be unsafe. Consider using strcpy_s instead. To disable deprecation +, use _CRT_ SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' dbdimp.ec(2348) : warning C4013: 'biginttoasc' undefined; assuming ext +ern returning int dbdimp.ec(2358) : warning C4996: 'sprintf': This function or variable +may be unsafe. Consider using sprintf_s instead. To disable deprecati +on, use _CR T_SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(2367) : warning C4996: 'sprintf': This function or variable +may be unsafe. Consider using sprintf_s instead. To disable deprecati +on, use _CR T_SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' dbdimp.ec(2381) : warning C4996: 'strcpy': This function or variable m +ay be unsafe. Consider using strcpy_s instead. To disable deprecation +, use _CRT_ SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' C:\Perl\bin\perl.exe -MExtUtils::Command -e rm_f dbdimp.c C:\PROGRA~2\IBM\Informix\11.70\bin\ESQL.EXE -c -IC:\PROGRA~2 +\IBM\Informix\11.70/incl/esql -IC:\Perl\lib/auto/DBI -IC:\Perl\site\l +ib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib/auto/DBI -cc -nologo -GF -W3 -MD -Zi - +DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HAS +H_SEED -DUS E_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_I +MPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 + -DVERSIO N=\"2011.0612\" -DXS_VERSION=\"2011.0612\" -IC:\Perl\lib\CORE -DESQL +C_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_H -DESQLC_IFX_LOC_T dbdatt +r.ec IBM Informix CSDK Version 3.70, IBM Informix-ESQL Version 3.70.TC5 dbdattr.c C:\Perl\lib\CORE\sys/socket.h(32) : warning C4005: 'ENOTSOCK' : macro +redefinition c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\errno.h(120) : see previous definition of 'ENOTSOCK' dbdattr.ec(280) : warning C4013: 'biginttoasc' undefined; assuming ext +ern returning int dbdattr.ec(556) : warning C4244: 'function' : conversion from 'long' t +o 'ixInt2', possible loss of data C:\Perl\bin\perl.exe -MExtUtils::Command -e rm_f dbdattr.c cl -c -IC:\PROGRA~2\IBM\Informix\11.70/incl/esql -IC:\Perl\li +b/auto/DBI -IC:\Perl\site\lib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib +/auto/DBI -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -D +HAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_ +INC -DPERL_ IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFI +X -MD -Zi -DNDEBUG -O1 -DVERSION=\"2011.0612\" -DXS_VERSION=\"201 +1.0612\" " -IC:\Perl\lib\CORE" -DESQLC_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_ +H -DESQLC_IFX_LOC_T sqltoken.c sqltoken.c C:\PROGRA~2\IBM\Informix\11.70\bin\ESQL.EXE -c -IC:\PROGRA~2 +\IBM\Informix\11.70/incl/esql -IC:\Perl\lib/auto/DBI -IC:\Perl\site\l +ib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib/auto/DBI -cc -nologo -GF -W3 -MD -Zi - +DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HAS +H_SEED -DUS E_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_I +MPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 + -DVERSIO N=\"2011.0612\" -DXS_VERSION=\"2011.0612\" -IC:\Perl\lib\CORE -DESQL +C_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_H -DESQLC_IFX_LOC_T sqltyp +e.ec IBM Informix CSDK Version 3.70, IBM Informix-ESQL Version 3.70.TC5 sqltype.c sqltype.ec(172) : warning C4013: 'snprintf' undefined; assuming extern + returning int C:\Perl\bin\perl.exe -MExtUtils::Command -e rm_f sqltype.c C:\PROGRA~2\IBM\Informix\11.70\bin\ESQL.EXE -c -IC:\PROGRA~2 +\IBM\Informix\11.70/incl/esql -IC:\Perl\lib/auto/DBI -IC:\Perl\site\l +ib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib/auto/DBI -cc -nologo -GF -W3 -MD -Zi - +DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HAS +H_SEED -DUS E_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_I +MPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 + -DVERSIO N=\"2011.0612\" -DXS_VERSION=\"2011.0612\" -IC:\Perl\lib\CORE -DESQL +C_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_H -DESQLC_IFX_LOC_T ixblob +.ec IBM Informix CSDK Version 3.70, IBM Informix-ESQL Version 3.70.TC5 ixblob.c ixblob.ec(83) : warning C4996: 'strcpy': This function or variable may + be unsafe. Consider using strcpy_s instead. To disable deprecation, +use _CRT_SE CURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' ixblob.ec(101) : warning C4996: 'getenv': This function or variable ma +y be unsafe. Consider using _dupenv_s instead. To disable deprecation +, use _CRT_ SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdlib.h(433) : see declaration of 'getenv' ixblob.ec(138) : warning C4013: 'getpid' undefined; assuming extern re +turning int ixblob.ec(138) : warning C4996: 'sprintf': This function or variable m +ay be unsafe. Consider using sprintf_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdio.h(371) : see declaration of 'sprintf' ixblob.ec(140) : warning C4996: 'access': The POSIX name for this item + is deprecated. Instead, use the ISO C++ conformant name: _access. Se +e online he lp for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\io.h(299) : see declaration of 'access' ixblob.ec(145) : warning C4996: 'strcpy': This function or variable ma +y be unsafe. Consider using strcpy_s instead. To disable deprecation, + use _CRT_S ECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' ixblob.ec(172) : warning C4996: 'strcpy': This function or variable ma +y be unsafe. Consider using strcpy_s instead. To disable deprecation, + use _CRT_S ECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' ixblob.ec(173) : warning C4996: 'strcat': This function or variable ma +y be unsafe. Consider using strcat_s instead. To disable deprecation, + use _CRT_S ECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(110) : see declaration of 'strcat' ixblob.ec(185) : warning C4996: 'unlink': The POSIX name for this item + is deprecated. Instead, use the ISO C++ conformant name: _unlink. Se +e online he lp for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\io.h(212) : see declaration of 'unlink' ixblob.ec(247) : warning C4996: 'close': The POSIX name for this item +is deprecated. Instead, use the ISO C++ conformant name: _close. See +online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\io.h(302) : see declaration of 'close' ixblob.ec(253) : warning C4996: 'close': The POSIX name for this item +is deprecated. Instead, use the ISO C++ conformant name: _close. See +online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\io.h(302) : see declaration of 'close' ixblob.ec(258) : warning C4996: 'unlink': The POSIX name for this item + is deprecated. Instead, use the ISO C++ conformant name: _unlink. Se +e online he lp for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\io.h(212) : see declaration of 'unlink' C:\Perl\bin\perl.exe -MExtUtils::Command -e rm_f ixblob.c cl -c -IC:\PROGRA~2\IBM\Informix\11.70/incl/esql -IC:\Perl\li +b/auto/DBI -IC:\Perl\site\lib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib +/auto/DBI -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -D +HAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_ +INC -DPERL_ IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFI +X -MD -Zi -DNDEBUG -O1 -DVERSION=\"2011.0612\" -DXS_VERSION=\"201 +1.0612\" " -IC:\Perl\lib\CORE" -DESQLC_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_ +H -DESQLC_IFX_LOC_T odbctype.c odbctype.c cl -c -IC:\PROGRA~2\IBM\Informix\11.70/incl/esql -IC:\Perl\li +b/auto/DBI -IC:\Perl\site\lib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib +/auto/DBI -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -D +HAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_ +INC -DPERL_ IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFI +X -MD -Zi -DNDEBUG -O1 -DVERSION=\"2011.0612\" -DXS_VERSION=\"201 +1.0612\" " -IC:\Perl\lib\CORE" -DESQLC_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_ +H -DESQLC_IFX_LOC_T kludge.c kludge.c cl -c -IC:\PROGRA~2\IBM\Informix\11.70/incl/esql -IC:\Perl\li +b/auto/DBI -IC:\Perl\site\lib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib +/auto/DBI -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -D +HAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_ +INC -DPERL_ IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFI +X -MD -Zi -DNDEBUG -O1 -DVERSION=\"2011.0612\" -DXS_VERSION=\"201 +1.0612\" " -IC:\Perl\lib\CORE" -DESQLC_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_ +H -DESQLC_IFX_LOC_T link.c link.c C:\PROGRA~2\IBM\Informix\11.70\bin\ESQL.EXE -c -IC:\PROGRA~2 +\IBM\Informix\11.70/incl/esql -IC:\Perl\lib/auto/DBI -IC:\Perl\site\l +ib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib/auto/DBI -cc -nologo -GF -W3 -MD -Zi - +DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HAS +H_SEED -DUS E_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_I +MPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 + -DVERSIO N=\"2011.0612\" -DXS_VERSION=\"2011.0612\" -IC:\Perl\lib\CORE -DESQL +C_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_H -DESQLC_IFX_LOC_T esqlcv +er.ec IBM Informix CSDK Version 3.70, IBM Informix-ESQL Version 3.70.TC5 esqlcver.c C:\Perl\bin\perl.exe -MExtUtils::Command -e rm_f esqlcver.c C:\PROGRA~2\IBM\Informix\11.70\bin\ESQL.EXE -c -IC:\PROGRA~2 +\IBM\Informix\11.70/incl/esql -IC:\Perl\lib/auto/DBI -IC:\Perl\site\l +ib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib/auto/DBI -cc -nologo -GF -W3 -MD -Zi - +DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HAS +H_SEED -DUS E_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_I +MPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 + -DVERSIO N=\"2011.0612\" -DXS_VERSION=\"2011.0612\" -IC:\Perl\lib\CORE -DESQL +C_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_H -DESQLC_IFX_LOC_T esqlc_ +v6.ec IBM Informix CSDK Version 3.70, IBM Informix-ESQL Version 3.70.TC5 esqlc_v6.c esqlc_v6.ec(33) : warning C4996: 'getenv': This function or variable m +ay be unsafe. Consider using _dupenv_s instead. To disable deprecatio +n, use _CRT _SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\stdlib.h(433) : see declaration of 'getenv' esqlc_v6.ec(41) : warning C4996: 'strcpy': This function or variable m +ay be unsafe. Consider using strcpy_s instead. To disable deprecation +, use _CRT_ SECURE_NO_WARNINGS. See online help for details. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE +\string.h(105) : see declaration of 'strcpy' C:\Perl\bin\perl.exe -MExtUtils::Command -e rm_f esqlc_v6.c Running Mkbootstrap for DBD::Informix () C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 Informix +.bs link -out:blib\arch\auto\DBD\Informix\Informix.dll -dll -nolog +o -nodefaultlib -debug -opt:ref,icf -libpath:"C:\Perl\lib\CORE" -ma +chine:x86 I nformix.obj dbdimp.obj dbdattr.obj sqltoken.obj sqltype.obj ixblob.obj + odbctype.obj kludge.obj link.obj esqlcver.obj esqlc_v6.obj /LIBPATH: +C:\PROGRA~2 \IBM\Informix\11.70/lib /LIBPATH:C:\PROGRA~2\IBM\Informix\11.70/lib/es +ql "C:/PROGRA~2/IBM/Informix/11.70\lib\isqlt09a.lib" "C:/PROGR +A~2/IBM/Inf ormix/11.70\lib\igl4n304.lib" "C:/PROGRA~2/IBM/Informix/11.70\lib\iglx +n304.lib" "C:/PROGRA~2/IBM/Informix/11.70\lib\igo4n304.lib" netapi32. +lib wsock32 .lib user32.lib winmm.lib advapi32.lib C:\Perl\lib\CORE\perl58.lib ol +dnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.l +ib advapi32 .lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32. +lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib + -def:Infor mix.def Creating library blib\arch\auto\DBD\Informix\Informix.lib and objec +t blib\arch\auto\DBD\Informix\Informix.exp sqltype.obj : error LNK2019: unresolved external symbol _snprintf refe +renced in function _sqltypename ixblob.obj : error LNK2019: unresolved external symbol _mkstemp refere +nced in function _blob_locinanonfile blib\arch\auto\DBD\Informix\Informix.dll : fatal error LNK1120: 2 unre +solved externals NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual S +tudio 10.0\VC\BIN\link.EXE"' : return code '0x460' Stop.

"Its not how hard you work, its how much you get done."

  • Comment on Re: Problem Installing DBD::Informix on Windows 7 using AS Perl 5.8.9
  • Download Code

Replies are listed 'Best First'.
Re^2: Problem Installing DBD::Informix on Windows 7 using AS Perl 5.8.9
by bulk88 (Priest) on Aug 20, 2012 at 19:53 UTC
    C:\PROGRA~2\IBM\Informix\11.70\bin\ESQL.EXE -c -IC:\PROGRA~2 +\IBM\Informix\11.70/incl/esql -IC:\Perl\lib/auto/DBI -IC:\Perl\site\l +ib/auto/DBI -I/auto/DBI -IC:\Perl\site\lib/auto/DBI -cc -nologo -GF -W3 -MD -Zi - +DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HAS +H_SEED -DUS E_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_I +MPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 + -DVERSIO N=\"2011.0612\" -DXS_VERSION=\"2011.0612\" -IC:\Perl\lib\CORE -DESQL +C_VERSION=370 -DNDEBUG -DDO_NOT_USE_STDERR_H -DESQLC_IFX_LOC_T sqltyp +e.ec IBM Informix CSDK Version 3.70, IBM Informix-ESQL Version 3.70.TC5 sqltype.c sqltype.ec(172) : warning C4013: 'snprintf' undefined; assuming extern + returning int
    Somewhere in the headers for sqltype.ec/sqltype.c (what is a .ec?) you are missing a declaration for snprintf. How I diagnose this is the following, you need to create a .i post preprocessor file. For most CPAN modules a "nmake nameofCfile.i" will make a .i. Then, this is optional but recommended so your eyes dont bleed, send the .i file through a C code formatter, I use http://universalindent.sourceforge.net/. Then open the .i file in a code editor, for a search for ALL mentions of snprintf (the function name). For a typical CPAN module using my VS 2003, I got the following for snprintf.
    #line 279 "C:\\Program Files\\Microsoft Visual Studio .NET 2003\\VC7\\ +INCLUDE\\stdio.h" __declspec(dllimport) int __cdecl _flushall(void); __declspec(dllimport) FILE * __cdecl fopen(const char *, const char *) +; __declspec(dllimport) int __cdecl fprintf(FILE *, const char *, ...); __declspec(dllimport) int __cdecl fputc(int, FILE *); __declspec(dllimport) int __cdecl _fputchar(int); __declspec(dllimport) int __cdecl fputs(const char *, FILE *); __declspec(dllimport) size_t __cdecl fread(void *, size_t, size_t, FIL +E *); __declspec(dllimport) FILE * __cdecl freopen(const char *, const char +*, FILE *); __declspec(dllimport) int __cdecl fscanf(FILE *, const char *, ...); __declspec(dllimport) int __cdecl fsetpos(FILE *, const fpos_t *); __declspec(dllimport) int __cdecl fseek(FILE *, long, int); __declspec(dllimport) long __cdecl ftell(FILE *); __declspec(dllimport) size_t __cdecl fwrite(const void *, size_t, size +_t, FILE *); __declspec(dllimport) int __cdecl getc(FILE *); __declspec(dllimport) int __cdecl getchar(void); __declspec(dllimport) int __cdecl _getmaxstdio(void); __declspec(dllimport) char * __cdecl gets(char *); __declspec(dllimport) int __cdecl _getw(FILE *); __declspec(dllimport) void __cdecl perror(const char *); __declspec(dllimport) int __cdecl _pclose(FILE *); __declspec(dllimport) FILE * __cdecl _popen(const char *, const char * +); __declspec(dllimport) int __cdecl printf(const char *, ...); __declspec(dllimport) int __cdecl putc(int, FILE *); __declspec(dllimport) int __cdecl putchar(int); __declspec(dllimport) int __cdecl puts(const char *); __declspec(dllimport) int __cdecl _putw(int, FILE *); __declspec(dllimport) int __cdecl remove(const char *); __declspec(dllimport) int __cdecl rename(const char *, const char *); __declspec(dllimport) void __cdecl rewind(FILE *); __declspec(dllimport) int __cdecl _rmtmp(void); __declspec(dllimport) int __cdecl scanf(const char *, ...); __declspec(dllimport) void __cdecl setbuf(FILE *, char *); __declspec(dllimport) int __cdecl _setmaxstdio(int); __declspec(dllimport) int __cdecl setvbuf(FILE *, char *, int, size_t) +; __declspec(dllimport) int __cdecl _snprintf(char *, size_t, const char + *, ...); __declspec(dllimport) int __cdecl sprintf(char *, const char *, ...); __declspec(dllimport) int __cdecl _scprintf(const char *, ...); __declspec(dllimport) int __cdecl sscanf(const char *, const char *, . +..); __declspec(dllimport) int __cdecl _snscanf(const char *, size_t, const + char *, ...); __declspec(dllimport) char * __cdecl _tempnam(const char *, const char + *); __declspec(dllimport) FILE * __cdecl tmpfile(void); __declspec(dllimport) char * __cdecl tmpnam(char *); __declspec(dllimport) int __cdecl ungetc(int, FILE *); __declspec(dllimport) int __cdecl _unlink(const char *); __declspec(dllimport) int __cdecl vfprintf(FILE *, const char *, va_li +st); __declspec(dllimport) int __cdecl vprintf(const char *, va_list); __declspec(dllimport) int __cdecl _vsnprintf(char *, size_t, const cha +r *, va_list); __declspec(dllimport) int __cdecl vsprintf(char *, const char *, va_li +st); __declspec(dllimport) int __cdecl _vscprintf(const char *, va_list); ---------------CUT----------------- #line 1 "c:\\perl517\\lib\\core\\proto.h" ---------------CUT----------------- //still in proto.h __declspec(dllimport) void Perl_my_setenv( PerlInterpreter* my_perl + , const char* nam, const char* val); __declspec(dllimport) int Perl_my_snprintf(char *buffer, const size +_t len, const char *format, ...) ; ------------------------CUT----------------------- //still in proto.h I think __declspec(dllimport) I32 Perl_my_stat_flags( PerlInterpreter* my_p +erl , const U32 flags); __declspec(dllimport) char * Perl_my_strftime( PerlInterpreter* my_ +perl , const char *fmt, int sec, int min, int hour, int mday, int mon +, int year, int wday, int yday, int isdst) ; __declspec(dllimport) void Perl_my_swabn(void* ptr, int n) ; __declspec(dllimport) void Perl_my_unexec( PerlInterpreter* my_perl + ); __declspec(dllimport) int Perl_my_vsnprintf(char *buffer, const siz +e_t len, const char *format, va_list ap) ;
    The lack of the header declaration, and that ALONE, is what caused the "assuming extern returning int" error. My VS 2008 also doesn't have a snprintf. The problem now is, do we get a snprintf? comment out where it is used? Write one from scratch? write a dummy that just returns? copy paste from another FOSS project? find an equivalent under another name? look for an undocumented MS CRT DLL export?

    First lets look and see if the Perl interp has a work around. Grepping /Windows search the perl interp source code, reveals this line, win32/win32.h#l207 in perl.git
    196 #ifdef _MSC_VER /* Microsoft Visual C++ */ 197 198 #ifndef UNDER_CE 199 typedef long uid_t; 200 typedef long gid_t; 201 typedef unsigned short mode_t; 202 #endif 203 204 #pragma warning(disable: 4102) /* "unreferenced label" */ 205 206 #define isnan _isnan 207 #define snprintf _snprintf 208 #define vsnprintf _vsnprintf 209 210 #if _MSC_VER < 1300 211 /* VC6 has broken NaN semantics: NaN == NaN returns true instead +of false */ 212 #define NAN_COMPARE_BROKEN 1 213 #endif 214 215 #endif /* _MSC_VER */
    I guess that is the best thing to try. Since I dont know the headers/includes in sqltype/.c/.ec files are I can't tell you if sqltype is perl-aware (has EXTERN.h, perl.h, XSUB.h) or not. If it is perl aware, it should have gotten that redefinition, and if that redefinition didn't happen yet the compiland is perl aware that is a different problem to trouble shoot.

    Since _snprintf is in msvcrt.lib and msvcrt.lib is on the cmd line to link, the link will work then.
    link -out:blib\arch\auto\DBD\Informix\Informix.dll -dll -nolog +o -nodefaultlib -debug -opt:ref,icf -libpath:"C:\Perl\lib\CORE" -ma +chine:x86 I nformix.obj dbdimp.obj dbdattr.obj sqltoken.obj sqltype.obj ixblob.obj + odbctype.obj kludge.obj link.obj esqlcver.obj esqlc_v6.obj /LIBPATH: +C:\PROGRA~2 \IBM\Informix\11.70/lib /LIBPATH:C:\PROGRA~2\IBM\Informix\11.70/lib/es +ql "C:/PROGRA~2/IBM/Informix/11.70\lib\isqlt09a.lib" "C:/PROGR +A~2/IBM/Inf ormix/11.70\lib\igl4n304.lib" "C:/PROGRA~2/IBM/Informix/11.70\lib\iglx +n304.lib" "C:/PROGRA~2/IBM/Informix/11.70\lib\igo4n304.lib" netapi32. +lib wsock32 .lib user32.lib winmm.lib advapi32.lib C:\Perl\lib\CORE\perl58.lib ol +dnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.l +ib advapi32 .lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32. +lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib + -def:Infor mix.def Creating library blib\arch\auto\DBD\Informix\Informix.lib and objec +t blib\arch\auto\DBD\Informix\Informix.exp sqltype.obj : error LNK2019: unresolved external symbol _snprintf refe +renced in function _sqltypename ixblob.obj : error LNK2019: unresolved external symbol _mkstemp refere +nced in function _blob_locinanonfile blib\arch\auto\DBD\Informix\Informix.dll : fatal error LNK1120: 2 unre +solved externals NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual S +tudio 10.0\VC\BIN\link.EXE"' : return code '0x460' Stop.
    The "ixblob.obj : error LNK2019: unresolved external symbol _mkstemp referenced in function _blob_locinanonfile" error will be more difficult to diagnose. Again looking through a typical CPAN module .i file I see.
    #line 280 "c:\\perl517\\lib\\core\\win32.h" extern char * getlogin(void); extern int chown(const char *p, uid_t o, gid_t g); extern int mkstemp(const char *path); __declspec(dllimport) void Perl_win32_init(int *argcp, char *** +argvp); __declspec(dllimport) void Perl_win32_term(void); __declspec(dllimport) void Perl_init_os_extras(void); __declspec(dllimport) void win32_str_os_error(void *sv, DWORD e +rr); __declspec(dllimport) int RunPerl(int argc, char **argv, char * +*env);
    Thats really interesting. That is the 1 and only mention of mkstemp in the .i file. I look at export list of msvcr100.dll (happens to be on my screen), no mkstemp or _mkstemp, I also looked at export list of perl517.dll (my perl). Its a bug with the perl interp. Perl declares a mkstemp at win32/win32.h#l282 in perl.git, but Perl's internal mkstemp at win32/win32.c#l1089 in perl.git isn't exported, so that badly suppressed another "assuming extern returning int" you should have gotten. I'm off to file another RT bug now.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://988481]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2024-03-29 15:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found