http://www.perlmonks.org?node_id=988998


in reply to Re^12: Trouble Installing Win32::GuiTest
in thread Trouble Installing Win32::GuiTest

... the generated lib file libperl514.a size is 0 byte

Yes, it should be a bit bigger than that ;-)

My 64-bit strawberry portable (5.16.0.1 #1 Tue May 22 13:24:11 2012 x64) is in C:/_64/Strawberry516, so I 'cd' to that folder and double click on 'portableshell.bat'.
That opens up a shell for me and, in that shell, I 'cd' to C:/_64/perl1400/bin - which is where my ActivePerl perl514.dll is located.
I then run the commands that I posted earlier and end up with an 859KB libperl514.a.
Full transcript follows:
---------------------------------------------- Welcome to Strawberry Perl Portable Edition! * URL - http://www.strawberryperl.com/ * see README.portable.TXT for more info ---------------------------------------------- Perl executable: C:\_64\strawberry516\perl\bin\perl.exe Perl version : 5.16.0 C:\_64\strawberry516>cd \_64\perl1400\bin C:\_64\perl1400\bin>gendef perl514.dll * [perl514.dll] Found PE+ image C:\_64\perl1400\bin>dlltool --kill-at --input-def perl514.def --output +-lib libperl514.a C:\_64\perl1400\bin>
If I wanted to use that libperl514.a with EU::FC I would have to move it to C:/_64/perl1400/lib/CORE.

Can you see any reason that the same procedure has not worked for you ?
(I can't, but I'm a little further away than you are :-)

Cheers,
Rob

Replies are listed 'Best First'.
Re^14: Trouble Installing Win32::GuiTest
by nsharma (Initiate) on Aug 22, 2012 at 10:23 UTC

    Hey Rob, Thanks to ur instructions this time I have generated the libperl514.a of 860KB size. :) But now during the make test message is prompted that "The program can't start because libgcc_s_sjlj-1.dll is missing from your computer. Try reinstalling the program to fix this problem." Output is here

    CPAN.pm: Going to build K/KA/KARASIK/Win32-GuiTest-1.60.tar.gz Set up gcc environment - gcc.exe (rubenvb-4.5.4) 4.5.4 Checking if your kit is complete... Looks good Writing Makefile for Win32::GuiTest Writing MYMETA.yml cp lib/Win32/GuiTest/GuiTest.pc blib\lib\Win32\GuiTest\GuiTest.pc cp lib/Win32/GuiTest/Examples.pm blib\lib\Win32\GuiTest\Examples.pm cp lib/Win32/GuiTest.pm blib\lib\Win32\GuiTest.pm cp lib/Win32/GuiTest/Cmd.pm blib\lib\Win32\GuiTest\Cmd.pm C:\Perl64\bin\perl.exe -IC:\Perl64\lib -IC:\Perl64\lib C:\Perl64\lib\E +xtUtils\xsubpp -typemap C:\Perl64\lib\ExtUtils\typemap -typemap perl +object.map -typemap gcc -c -O2 -DWIN32 -DPERL_IMPLICIT_CONTEXT -DPERL_MSVCRT_READ +FIX -O2 -DVERSION=\"1.60\" -DXS_VERSION=\"1.60\" -DHASATTRIBUT +E "-IC:\Perl64\lib\C gcc -c -O2 -DWIN32 -DPERL_IMPLICIT_CONTEXT -DPERL_MSVCRT_READ +FIX -O2 -DVERSION=\"1.60\" -DXS_VERSION=\"1.60\" -DHASATTRIBUT +E "-IC:\Perl64\lib\C Running Mkbootstrap for Win32::GuiTest () C:\Perl64\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 GuiTest.b +s C:\Perl64\bin\perl.exe -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"Win32::GuiTest\", 'DLBASE' => 'GuiTest', + 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' = +> []);" dlltool --def GuiTest.def --output-exp dll.exp g++ -o blib\arch\auto\Win32\GuiTest\GuiTest.dll -Wl,--base-file -Wl,dl +l.base -s -mdll -L"C:\Perl64\lib\CORE" GuiTest.o DibSect.o C:\Perl6 +4\lib\CORE\libperl51 dlltool --def GuiTest.def --base-file dll.base --output-exp dll.exp g++ -o blib\arch\auto\Win32\GuiTest\GuiTest.dll -s -mdll -L"C:\Perl64\ +lib\CORE" GuiTest.o DibSect.o C:\Perl64\lib\CORE\libperl514.a -lmsv +crt -lmoldname -lker C:\Perl64\bin\perl.exe -MExtUtils::Command -e "chmod" -- 755 blib\arch +\auto\Win32\GuiTest\GuiTest.dll C:\Perl64\bin\perl.exe -MExtUtils::Command -e "cp" -- GuiTest.bs blib\ +arch\auto\Win32\GuiTest\GuiTest.bs C:\Perl64\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 blib\arch +\auto\Win32\GuiTest\GuiTest.bs KARASIK/Win32-GuiTest-1.60.tar.gz dmake -- OK Running make test C:\Perl64\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, + 'blib\lib', 'blib\arch')" t/*.t t/01_basic.t ..... Can't load 'C:\Perl64\cpan\build\Win32-GuiTest-1.60 +-5fvYWK\blib\arch/auto/Win32/GuiTest/GuiTest.dll' for module Win32::G +uiTest: load_file:Th at t/01_basic.t line 12 Compilation failed in require at t/01_basic.t line 12. BEGIN failed--compilation aborted at t/01_basic.t line 12. t/01_basic.t ..... Dubious, test returned 2 (wstat 512, 0x200) No subtests run t/02_calc.t ...... skipped: this test is phased out t/03_cpl.t ....... Can't load 'C:\Perl64\cpan\build\Win32-GuiTest-1.60 +-5fvYWK\blib\arch/auto/Win32/GuiTest/GuiTest.dll' for module Win32::G +uiTest: load_file:Th at t/03_cpl.t line 19 Compilation failed in require at t/03_cpl.t line 19. BEGIN failed--compilation aborted at t/03_cpl.t line 22. t/03_cpl.t ....... Dubious, test returned 2 (wstat 512, 0x200) No subtests run t/04_std.t ....... Can't load 'C:\Perl64\cpan\build\Win32-GuiTest-1.60 +-5fvYWK\blib\arch/auto/Win32/GuiTest/GuiTest.dll' for module Win32::G +uiTest: load_file:Th at t/04_std.t line 12 Compilation failed in require at t/04_std.t line 12. BEGIN failed--compilation aborted at t/04_std.t line 15. t/04_std.t ....... Dubious, test returned 2 (wstat 512, 0x200) No subtests run t/05_which.t ..... ok t/06_sendkeys.t .. Can't load 'C:\Perl64\cpan\build\Win32-GuiTest-1.60 +-5fvYWK\blib\arch/auto/Win32/GuiTest/GuiTest.dll' for module Win32::G +uiTest: load_file:Th at t/06_sendkeys.t line 12 Compilation failed in require at t/06_sendkeys.t line 12. BEGIN failed--compilation aborted at t/06_sendkeys.t line 12. t/06_sendkeys.t .. Dubious, test returned 2 (wstat 512, 0x200) No subtests run Test Summary Report ------------------- t/01_basic.t (Wstat: 512 Tests: 0 Failed: 0) Non-zero exit status: 2 Parse errors: No plan found in TAP output t/03_cpl.t (Wstat: 512 Tests: 0 Failed: 0) Non-zero exit status: 2 Parse errors: No plan found in TAP output t/04_std.t (Wstat: 512 Tests: 0 Failed: 0) Non-zero exit status: 2 Parse errors: No plan found in TAP output t/06_sendkeys.t (Wstat: 512 Tests: 0 Failed: 0) Non-zero exit status: 2 Parse errors: No plan found in TAP output Files=6, Tests=6, 425 wallclock secs ( 0.03 usr + 0.03 sys = 0.06 CP +U) Result: FAIL Failed 4/6 test programs. 0/6 subtests failed. dmake.exe: Error code 130, while making 'test_dynamic' KARASIK/Win32-GuiTest-1.60.tar.gz dmake test -- NOT OK //hint// to see the cpan-testers results for installing this module, t +ry: reports KARASIK/Win32-GuiTest-1.60.tar.gz Running make install make test had returned bad status, won't install without force Failed during this command: KARASIK/Win32-GuiTest-1.60.tar.gz : make_test NO
    This dll file is available in strawberry516. So, can I copy this dll file from strwaberry perl C:_\strawberry516\c\bin to C:\Perl64\bin and again rerun the installation and check.

      ...program can't start because libgcc_s_sjlj-1.dll is missing

      I haven't used any of Ruben's builds of MinGW, but I would have expected that there would be a libgcc_s_sjlj-1.dll in the same ('bin') folder as gcc.
      Search the entire compiler tree for that file and, if you find it, add that location to your PATH.
      I think you might find it in both the compiler's mingw\lib and x86_64-w64-mingw32\lib folder - in which case you just add either of those locations to the path.

      This dll file is available in strawberry516

      Best not to copy it across to a different compiler.
      You could use the compiler that came with Strawberry instead of Ruben's, if you like. Just put the strawberry/c/bin folder first in the path.

      However, Ruben's should be fine, I think ... once you find libgcc_s_sjlj-1.dll and add it's location to the path.

      Cheers,
      Rob

      Hi Rob, Thanks once again for your help. I have copied all dll files present in strawberry perl to c:\perl64\bin and ran the installation. Thankfully, I was able to install Win32::GuiTest module on perl64 successfully. But my problem still not solved reason being, I have a automated framework suite where I have used Win32::GuiTest module to test the GUI functionality of the windows application 32 bit and 64 bit. This module perfectly working fine for 32 bit application but for 64 bit application it fails for APIs like GetPopupHandle, GetListContents etc. Moreover with this I have one more module named "TreeView.pm" (Win32::GuiTest::TreeView) this module basically traverse the systreeview class and provide us the relevant information but this module also not working properly on windows 64 bit application. So, unfortunately again I got stuck and wondering now what to do and also want to know that this module Win32::GuiTest compiled as 64 bit by 64 bit compiler or its simply installed as 32 bit. Thanks.

        for 64 bit application it fails for APIs like GetPopupHandle, GetListContents etc.

        I don't know whether that happens because all of the files you copied across have broken Ruben's compiler ... or whether its' something that's happening for other reasons.

        If you like to provide a small script that demonstrates your problem on 64-bit perls (and is something that I could run), I'll give it a run (using my 64-bit compiler, which I know to be unbroken) and see if I get the same problem.
        (Probably best to provide the demo in a new thread - I don't think there would be many people still following *this* thread.)

        Cheers,
        Rob

        FWIW: Win32::GuiTest version 1.60 compiles & tests okay, if a little noisily using MSVC 64-bit:

        If there are any specific tests you want run for comparison purposes ...


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.

        The start of some sanity?