in reply to Re: Tcl for Strawberry Perl on Windows 64bit
in thread Tcl for Strawberry Perl on Windows 64bit

not quite so simple. This is the result from attempting to build Tcl using lateset Strawberry Perl (perl 5, version 22, subversion 0 (v5.22.0) built for MSWin32-x64-multi-thread) and AS TCl (ActiveState ActiveTcl 8.6.4.1.299124 distribution for Win32/x64)

result from perl Makefile.PL

tclsh=C:/Tcl/bin/tclsh.exe tclConfig.sh=C:/Tcl/lib/tclConfig.sh tcl_library=C:/Tcl/lib/tcl8.6 tcl_version=8.6 LIBS = -LC:/Tcl/lib -ltcl86 INC = -IC:/Tcl/include DEFINE = Checking if your kit is complete... Looks good Generating a dmake-style Makefile Writing Makefile for Tcl Writing MYMETA.yml and MYMETA.json
which looks right. It found the lib, inc, version, tclsh etc. So when I attempt to make (or rather dmake)

cp Tcl.pm blib\lib\Tcl.pm Running Mkbootstrap for Tcl () "C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 +"Tcl.bs" "C:\Strawberry\perl\bin\perl.exe" "C:\Strawberry\perl\lib\ExtUtils\xsu +bpp" -typemap "C:\STRAWB~1\perl\lib\ExtUtils\typemap" -typemap "type +map" Tcl.xs > Tcl.xsc && "C:\Strawberry\perl\bin\perl.exe" -MExtUtil +s::Command -e mv -- Tcl.xsc Tcl.c Please specify prototyping behavior for Tcl.xs (see perlxs manual) gcc -c -IC:/Tcl/include -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE +-DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS - +fwrapv -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"1. +02\" -DXS_VERSION=\"1.02\" "-IC:\STRAWB~1\perl\lib\CORE" Tcl.c "C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"Tcl\", 'DLBASE' => 'Tcl', 'DL_FUNCS' => +{ }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def Tcl.def --output-exp dll.exp g++ -o blib\arch\auto\Tcl\Tcl.xs.dll -Wl,--base-file -Wl,dll.base -mdl +l -s -L"C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib" Tcl.o "C:\ +STRAWB~1\perl\lib\CORE\libperl522.a" "C:\Tcl\lib\tcl86.lib" "C:\STRAW +B~1\c\x86_64-w64-mingw32\lib\libmoldname.a" "C:\STRAWB~1\c\x86_64-w64 +-mingw32\lib\libkernel32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\lib +user32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libgdi32.a" "C:\STRAW +B~1\c\x86_64-w64-mingw32\lib\libwinspool.a" "C:\STRAWB~1\c\x86_64-w64 +-mingw32\lib\libcomdlg32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\lib +advapi32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libshell32.a" "C:\S +TRAWB~1\c\x86_64-w 64-mingw32\lib\libole32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libol +eaut32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libnetapi32.a" "C:\ST +RAWB~1\c\x86_64-w64-mingw32\lib\libuuid.a" "C:\STRAWB~1\c\x86_64-w64- +mingw32\lib\libws2_32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libmpr +.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libwinmm.a" "C:\STRAWB~1\c\ +x86_64-w64-mingw32\lib\libversion.a" "C:\STRAWB~1\c\x86_64-w64-mingw3 +2\lib\libodbc32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libodbccp32. +a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libcomctl32.a" dll.exp C:\Tcl\lib\tcl86.lib: error adding symbols: File format not recognized collect2.exe: error: ld returned 1 exit status dmake: Error code 129, while making 'blib\arch\auto\Tcl\Tcl.xs.dll'

Any ideas? Its clearly struggling with the tcl86.lib format...

Replies are listed 'Best First'.
Re^3: Tcl for Strawberry Perl on Windows 64bit
by syphilis (Archbishop) on Jul 21, 2015 at 08:48 UTC
    Any ideas? Its clearly struggling with the tcl86.lib format

    Is tcl86.lib an import lib (stub lib) for a dll ? ... or is it a static library ?
    If it's an import lib, then you can use Strawberry to build a mingw import lib for that dll.
    (Also, just check that it's an x64 library that you've got.)

    Cheers,
    Rob
Re^3: Tcl for Strawberry Perl on Windows 64bit
by Anonymous Monk on Jul 21, 2015 at 06:51 UTC

    not quite so simple.

    It still looks very very simple :)

    Ok, this is simpler, portable activeperl, it comes with Tcl/Tkx http://downloads.activestate.com/ActivePerl/releases/5.20.2.2001/ActivePerl-5.20.2.2001-MSWin32-x64-298913.zip

    This is the result from attempting to build Tcl using lateset Strawberry Perl (perl 5, version 22, subversion 0 (v5.22.0) built for MSWin32-x64-multi-thread) and AS TCl (ActiveState ActiveTcl 8.6.4.1.299124 distribution for Win32/x64)

    result from perl Makefile.PL C:\Tcl\lib\tcl86.lib: error adding symbols: File format not recognized

    Any ideas? Its clearly struggling with the tcl86.lib format...

    That is simple, examine the file

    Step one, get diagnostics

    file "C:\Tcl\lib\tcl86.lib" sha1sum "C:\Tcl\lib\tcl86.lib" objdump -p "C:\Tcl\lib\tcl86.lib" |head

      I'm not sure where the file command comes from. Anyway the size/datetime....

      06/06/2015 06:17 181,880 tcl86.lib

      I downloaded an sha1sum.exe, here's the result

      5b2c87ccbc0838d7c9687f15f5ab6a33f7f77837 C:\Tcl\lib\tcl86.lib

      and the results of objdumo

      C:\Tcl\lib>objdump -p "C:\Tcl\lib\tcl86.lib" |head In archive C:\Tcl\lib\tcl86.lib: tcl86.dll: file format pe-x86-64 Characteristics 0x0 Time/Date Sat Jun 06 05:37:55 2015 Magic 0000 MajorLinkerVersion 0 MinorLinkerVersion 0

      I appreciate your help

        Hmm, thats kinda interesting :)

        Ok next step is do what syphilis suggested which is generate a new "lib" from the dll( HOWTO Create an Import Library for a DLL using MinGW | MinGW )

        So start a new shell and run

        chdir C:\Tcl\lib move tcl86.lib original-tcl86.lib gendef C:\Tcl\bin\tcl86.dll dlltool --kill-at --input-def tcl86.def --output-lib tcl86.lib

        Then back in the the other cmd window run dmake again

        If it doesn't work copy/paste the error to share with us here :)

        Then try again with     dlltool -z tcl86.def --export-all-symbol C:\Tcl\bin\tcl86.dll instead of gendef