John M. Dlugosz has asked for the wisdom of the Perl Monks concerning the following question:

I'm trying to install Image::EXIF. Any idea what the problem is? When I issued nmake, I got linker errors for things that sound like they are part of the module. Here is the whole story:

[J:\temp\Image-EXIF-0.04\Image-EXIF-0.04]makefile.PL Checking if your kit is complete... Looks good Have C:\Program Files\Languages\Perl\lib\Config.pm expected C:\PROGRA~ +1\LANGUA~1\Perl\lib\Config.pm Your perl and your Config.pm seem to have different ideas about the ar +chitecture they are running on. Perl thinks: [lib] Config says: [MSWin32-x86-multi-thread] This may or may not cause problems. Please check your installation of +perl if you have problems building this extension. Note (probably harmless): No library found for '-lexif' Writing Makefile for Image::EXIF [J:\temp\Image-EXIF-0.04\Image-EXIF-0.04]make 4NT: Unknown command "make" [J:\temp\Image-EXIF-0.04\Image-EXIF-0.04]nmake Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. cp EXIF.pm blib\lib\Image\EXIF.pm AutoSplitting blib\lib\Image\EXIF.pm (blib\lib\auto\Image\EXIF) C:\PROGRA~1\Languages\Perl\bin\perl -IC:\PROGRA~1\LANGUA~1\Per +l\lib -IC:\PROGRA~1\LANGUA~1\Perl\lib C:\PROGRA~1\LANGUA~1\Per l\lib\ExtUtils/xsubpp -typemap C:\PROGRA~1\LANGUA~1\Perl\lib\ExtUtils +\typemap EXIF.xs > EXIF.xsc && C:\PROGRA~1\Languages\Perl\bin\ perl -IC:\PROGRA~1\LANGUA~1\Perl\lib -IC:\PROGRA~1\LANGUA~1\Perl\lib - +MExtUtils::Command -e mv EXIF.xsc EXIF.c Please specify prototyping behavior for EXIF.xs (see perlxs manual) cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE exif.c exif.c EXIF.xs(33) : warning C4133: '=' : incompatible types - from 'struct _ +PerlIO *' to 'struct _iobuf *' EXIF.xs(50) : warning C4133: 'function' : incompatible types - from 's +truct _iobuf *' to 'struct _PerlIO *' EXIF.xs(53) : warning C4133: 'function' : incompatible types - from 's +truct _iobuf *' to 'struct _PerlIO *' EXIF.xs(63) : warning C4133: 'function' : incompatible types - from 's +truct _iobuf *' to 'struct _PerlIO *' EXIF.xs(67) : warning C4133: 'function' : incompatible types - from 's +truct _iobuf *' to 'struct _PerlIO *' EXIF.xs(71) : warning C4133: 'function' : incompatible types - from 's +truct _iobuf *' to 'struct _PerlIO *' EXIF.xs(82) : warning C4133: 'function' : incompatible types - from 's +truct _iobuf *' to 'struct _PerlIO *' EXIF.xs(88) : warning C4133: 'function' : incompatible types - from 's +truct _iobuf *' to 'struct _PerlIO *' EXIF.xs(128) : warning C4716: 'close_application' : must return a valu +e cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE canon.c canon.c cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE casio.c casio.c cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE exifutil .c exifutil.c exifutil.c(64) : warning C4133: 'function' : incompatible types - from + 'char [256]' to 'struct _iobuf *' exifutil.c(72) : warning C4133: 'function' : incompatible types - from + 'char [256]' to 'struct _iobuf *' exifutil.c(79) : warning C4133: 'function' : incompatible types - from + 'char [256]' to 'struct _iobuf *' cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE fuji.c fuji.c cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE jpeg.c jpeg.c cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE makers.c makers.c cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE minolta. c minolta.c cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE nikon.c nikon.c cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE olympus. c olympus.c cl -c -nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT + -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX -O1 -MD -DNDEBUG -DVERSION=\"0.04\" -DXS_VE +RSION=\"0.04\" -IC:\PROGRA~1\LANGUA~1\Perl\lib\CORE tagdefs. c tagdefs.c "Running Mkbootstrap for Image::EXIF ()" C:\PROGRA~1\Languages\Perl\bin\perl -IC:\PROGRA~1\LANGUA~1\Per +l\lib -IC:\PROGRA~1\LANGUA~1\Perl\lib -MExtUtils::Command -e c hmod 644 EXIF.bs C:\PROGRA~1\Languages\Perl\bin\perl "-IC:\PROGRA~1\LANGUA~1\Pe +rl\lib" "-IC:\PROGRA~1\LANGUA~1\Perl\lib" -MExtUtils::Mksymlis ts -e "Mksymlists('NAME' => 'Image::EXIF', 'DLBASE' => 'EXIF', 'DL_FU +NCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' = > []);" link -out:blib\arch\auto\Image\EXIF\EXIF.dll -dll -nologo -nod +efaultlib -release -libpath:"C:\PROGRA~1\Languages\Perl\lib\C ORE" -machine:x86 EXIF.obj canon.obj casio.obj exif.obj exifutil. +obj fuji.obj jpeg.obj makers.obj minolta.obj nikon.obj o lympus.obj tagdefs.obj C:\PROGRA~1\LANGUA~1\Perl\lib\CORE\perl56.li +b "C:\Program Files\Microsoft Visual Studio\VC98\lib\oldnames. lib" "C:\Program Files\Microsoft Visual Studio\VC98\lib\kernel32.lib" +"C:\Program Files\Microsoft Visual Studio\VC98\lib\user32.lib" "C:\Program Files\Microsoft Visual Studio\VC98\lib\gdi32.lib" "C:\Pro +gram Files\Microsoft Visual Studio\VC98\lib\winspool.lib" "C:\ Program Files\Microsoft Visual Studio\VC98\lib\comdlg32.lib" "C:\Progr +am Files\Microsoft Visual Studio\VC98\lib\advapi32.lib" "C:\Pr ogram Files\Microsoft Visual Studio\VC98\lib\shell32.lib" "C:\Program +Files\Microsoft Visual Studio\VC98\lib\ole32.lib" "C:\Program Files\Microsoft Visual Studio\VC98\lib\oleaut32.lib" "C:\Program Files +\Microsoft Visual Studio\VC98\lib\netapi32.lib" "C:\Program Fi les\Microsoft Visual Studio\VC98\lib\uuid.lib" "C:\Program Files\Micro +soft Visual Studio\VC98\lib\wsock32.lib" "C:\Program Files\Mic rosoft Visual Studio\VC98\lib\mpr.lib" "C:\Program Files\Microsoft Vis +ual Studio\VC98\lib\winmm.lib" "C:\Program Files\Microsoft Vis ual Studio\VC98\lib\version.lib" "C:\Program Files\Microsoft Visual St +udio\VC98\lib\odbc32.lib" "C:\Program Files\Microsoft Visual S tudio\VC98\lib\odbccp32.lib" "C:\Program Files\Microsoft Visual Studio +\VC98\lib\msvcrt.lib" -def:EXIF.def exif.obj : warning LNK4042: object specified more than once; extras ig +nored exif.obj : warning LNK4042: object specified more than once; extras ig +nored Creating library blib\arch\auto\Image\EXIF\EXIF.lib and object blib +\arch\auto\Image\EXIF\EXIF.exp EXIF.obj : error LNK2001: unresolved external symbol _exifparse EXIF.obj : error LNK2001: unresolved external symbol _exiffree blib\arch\auto\Image\EXIF\EXIF.dll : fatal error LNK1120: 2 unresolved + externals NMAKE : fatal error U1077: 'link' : return code '0x460' Stop.
Thanks,
—John

Title edit by tye

Replies are listed 'Best First'.
Re: problem with a CPAN module
by PodMaster (Abbot) on Aug 13, 2003 at 06:58 UTC
    Why did you issue make if nmake is your make program?(perl -V:make
    Did you see "Note (probably harmless): No library found for '-lexif'"?
    Do you have libexif? (the README lists it as a requirement)
    From what I can see, libexif does not yet come in win32 flavor. Have fun ;)

    Tutorials -> Writing, Installing, and Using Perl Modules -> A Practical Guide to Compiling C based Modules under ActiveState using Microsoft C++

    MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
    I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
    ** The third rule of perl club is a statement of fact: pod is sexy.

      I saw that "possibly harmless" warning, but didn't understand it. I thought it had something to do with the way the module is packaged, not with a prerequisite.

      not yet a win32 flavor: ah, well, that's it then.

      —John

Re: problem with a CPAN module
by mildside (Friar) on Aug 13, 2003 at 06:22 UTC
    At a quick glance there could be library problems. Maybe multiple copies of C libraries or such? I'm afraid I can't add much more than that.

    Cheers!

    Update: OK, so maybe on reflection, that didn't add much value. I hope other monks can be more enlightening.