Ir para o conteúdo

 Voltar a PW3270 Desen...
Tela cheia

Erro de compilação

25 de Novembro de 2013, 15:28 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 340 vezes

Pessoal, estou tentando criar um bot em c++ mas quando eu tento compilar o projeto eu recebo erros:

 o make roda sem erros, mas não cria nenhum binário, segui o script para compilar com mingw em windows, estou usando o windows 7, alguem tem alguma ideia?

marcio 

Autor: Márcio Bonizi


2020 comentários

  • 3f09f0772d9354bc3661d73bf02b0f60?only path=false&size=50&d=404Perry Werneck(usuário não autenticado)
    25 de Novembro de 2013, 22:29

     

    Olá,

    Instalar o MinGW no windows é um processo complicado mesmo. ((-: 

    Qual versão do pw3270? Os comandos aclocal, autoconf e configure rodam normalmente? O make simplesmente sai, não apresenta nenhum erro?

    Se o que você pretende é gerar um robô usando c++ não seria mais fácil usar apenas os fontes da classe 3270 de exemplo ao invés de compilar a lib3270 inteira? Nunca testei mas acho bem provável que ela compile no MS Visual C++ que é bem mais simples de configurar que o MinGW bastaria anexar os encontrados em http://svn.softwarepublico.gov.br/svn/pw3270/branches/v5/src/classlib/ no seu projeto e modificar o testprogram.cc de acordo.

    PS: Precisa do pw3270 versão 5 com o plugin de HLLAPI instalado.

     

     

     

    • 2f85d167d628ae1d767471e62cc1bb2b?only path=false&size=50&d=404Márcio Bonizi(usuário não autenticado)
      26 de Novembro de 2013, 11:32

       

      o pw3270 é versão 4.2-7, o commando aclocal e autoconf rodam sem emitir nenhum output, ./configure funciona sem erros, apenas da pela falta de um um script chamado missing, e o make funciona sem erros, simplesmente sai.

       Realmente sua ideia era minha ideia inicial, mas  tive uma serie de problemas de compilação, vou tentar usar a versão 5.0 com o plugin

      vou tentar seguir sua recomendação e te farei um reporte depois.

      • 3f09f0772d9354bc3661d73bf02b0f60?only path=false&size=50&d=404Perry Werneck(usuário não autenticado)
        28 de Novembro de 2013, 19:37

         

        Olá,

        Parece mais algo relacionado ao próprio make que você está usando; tentou make --debug ?

         

        • 2f85d167d628ae1d767471e62cc1bb2b?only path=false&size=50&d=404Márcio Bonizi(usuário não autenticado)
          2 de Dezembro de 2013, 11:51

           

          Estou executando com make --debug mas ele não trouxe nenhuma mudança

          • 3f09f0772d9354bc3661d73bf02b0f60?only path=false&size=50&d=404Perry Werneck(usuário não autenticado)
            2 de Dezembro de 2013, 17:38

             

            Olá,

            Qual a saída do make --debug ?

             

            • 2f85d167d628ae1d767471e62cc1bb2b?only path=false&size=50&d=404Márcio Bonizi(usuário não autenticado)
              2 de Dezembro de 2013, 18:52

               

              GNU Make 3.81

              Copyright (C) 2006  Free Software Foundation, Inc.

              This is free software; see the source for copying conditions.

              There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A

              PARTICULAR PURPOSE.

              This program built for i686-pc-msys

              Reading makefiles...

              Updating goal targets....

              make: `/home/user/pw3270/.bin/pot/lib.pot' is up to date.

               

              qualquer sugestão eu agradeço 

               

              • 3f09f0772d9354bc3661d73bf02b0f60?only path=false&size=50&d=404Perry Werneck(usuário não autenticado)
                2 de Dezembro de 2013, 19:13

                 

                Olá,

                Pela saída parece que todos os "targets" já foram compilados; Tente...

                make clean
                make run
                ou...

                make clean
                make Debug
                 ou ...

                make clean
                make Release 

  • 2f85d167d628ae1d767471e62cc1bb2b?only path=false&size=50&d=404Márcio Bonizi(usuário não autenticado)
    28 de Novembro de 2013, 17:36

     

    tenho recebido muito esse tipo de erro, é normal ou é mancada minha?

     $ svn co svn.​soft​ware​publ​ico.​gov.​br/s​vn/p​w327​0/br​anch​es/v​5/ ./pw3270_v5_ 1 svn: access to 'http://svn.softwarepublico.gov.br/svn/pw3270/branches/v5' forbid den

    • 3f09f0772d9354bc3661d73bf02b0f60?only path=false&size=50&d=404Perry Werneck(usuário não autenticado)
      28 de Novembro de 2013, 19:36

       

      Olá,

      Não deveria dar forbidden mas, como raramente faço checkout no repositório (só svn update mesmo) não posso dizer se é normal.

       

  • 2f85d167d628ae1d767471e62cc1bb2b?only path=false&size=50&d=404Márcio Bonizi(usuário não autenticado)
    3 de Dezembro de 2013, 12:24

     

    ao executar o comando obtive esses outputs, não consegui indentificar deles um procedimento a seguir, qual seria o proximo passo? 

    marcio.bonizi@g40085 ~/pw3270

    $ make clean

    make[1]: Entering directory `/home/marcio.bonizi/pw3270/src/jni'

    make[1]: Leaving directory `/home/marcio.bonizi/pw3270/src/jni'

    make[1]: Entering directory `/home/marcio.bonizi/pw3270/src/lib'

    make[1]: Leaving directory `/home/marcio.bonizi/pw3270/src/lib'

    make[1]: Entering directory `/home/marcio.bonizi/pw3270/src/oxt'

    make[1]: Leaving directory `/home/marcio.bonizi/pw3270/src/oxt'

    make[1]: Entering directory `/home/marcio.bonizi/pw3270/src/gtk2'

    make[1]: Leaving directory `/home/marcio.bonizi/pw3270/src/gtk2'

    make[1]: Entering directory `/home/marcio.bonizi/pw3270/src/plugins/rexx'

    make[1]: Leaving directory `/home/marcio.bonizi/pw3270/src/plugins/rexx'

    marcio.bonizi@g40085 ~/pw3270

    $ make run

    make[1]: Entering directory `/home/marcio.bonizi/pw3270/src/lib'

    version.c ...

    version.c ...

    XtGlue.c ...

    In file included from XtGlue.c:60:0:

    c:\mingw\include\ws2tcpip.h:38:2: error: #error "ws2tcpip.h is not compatible wi

    th winsock.h. Include winsock2.h instead."

     #error "ws2tcpip.h is not compatible with winsock.h. Include winsock2.h instead

    ."

      ^

    In file included from XtGlue.c:60:0:

    c:\mingw\include\ws2tcpip.h:147:8: error: redefinition of 'struct ip_mreq'

     struct ip_mreq {

            ^

    In file included from c:\mingw\include\windows.h:93:0,

                     from C:/MinGW/msys/1.0/home/marcio.bonizi/pw3270/src/include/li

    b3270/api.h:45,

                     from C:/MinGW/msys/1.0/home/marcio.bonizi/pw3270/src/include/li

    b3270.h:200,

                     from globals.h:35,

                     from XtGlue.c:35:

    c:\mingw\include\winsock.h:315:8: note: originally defined here

     struct ip_mreq {

            ^

    make[1]: *** [/home/marcio.bonizi/pw3270/.obj/i686-pc-mingw32/Debug/lib/3270/XtG

    lue.o] Error 1

    make[1]: Leaving directory `/home/marcio.bonizi/pw3270/src/lib'

    make: *** [/home/marcio.bonizi/pw3270/.bin/Debug/lib/lib3270.dll] Error 2

    • 3f09f0772d9354bc3661d73bf02b0f60?only path=false&size=50&d=404Perry Werneck(usuário não autenticado)
      3 de Dezembro de 2013, 14:00

       

      Olá,

      Parece divergência de versão entre o fonte e o MinGW; esse fonte que você está usando é atual? 

       

      • 2f85d167d628ae1d767471e62cc1bb2b?only path=false&size=50&d=404Márcio Bonizi(usuário não autenticado)
        3 de Dezembro de 2013, 14:39

         

        então, o checkout esta dando aquele erro que eu postei ali em cima esse fonte eu peguei seguindo o script da sessão "compilando direto do fonte"

        • 3f09f0772d9354bc3661d73bf02b0f60?only path=false&size=50&d=404Perry Werneck(usuário não autenticado)
          3 de Dezembro de 2013, 15:12

           

          Olá,

          Você consegue acessar a URL http://svn.softwarepublico.gov.br/svn/pw3270/branches/v5/ pelo navegador?

          Uma outra opção é pegar o .tar.bz2 contendo o fonte mais atualizado no serviço de empacotamento:  https://build.opensuse.org/package/show/home:PerryWerneck/pw3270.

           

  • 2f85d167d628ae1d767471e62cc1bb2b?only path=false&size=50&d=404Márcio Bonizi(usuário não autenticado)
    3 de Dezembro de 2013, 15:58

     

    consegui pegar nesse repositorio!!! cara muito obrigado, ja estava tentando pegar pelo http... agora vou tentar usar o classlib qq coisa eu reporto

     

    Muitissimo obrigado 

    • 3f09f0772d9354bc3661d73bf02b0f60?only path=false&size=50&d=404Perry Werneck(usuário não autenticado)
      3 de Dezembro de 2013, 19:20

       

      Olá,

      Outra dica: Nas últimas versões do instalador para windows os fontes da classlib são instalados no diretorio [APP]\sdk\sample\classlib se você marcar a opção "Software Development Kit"; talvez seja mais fácil que baixar todo o .tar.bz2 e descompactar.

       

  • 2f85d167d628ae1d767471e62cc1bb2b?only path=false&size=50&d=404Márcio Bonizi(usuário não autenticado)
    4 de Dezembro de 2013, 11:58

     

    Ao criar um projeto no VS2008 obtive o seguinte erro de compilação:

    1>c:\mingw\include\stdio.h(26) : warning C4068: unknown pragma

    1>c:\mingw\include\_mingw.h(33) : warning C4068: unknown pragma

    1>c:\mingw\include\sdkddkver.h(26) : warning C4068: unknown pragma

    1>c:\mingw\include\_mingw.h(51) : fatal error C1189: #error :  ERROR: You must use a GNU Compiler.

     

    o include do cabeçalho iconv.h produz esse erro, alguma sugestão? 

  • 2f85d167d628ae1d767471e62cc1bb2b?only path=false&size=50&d=404Márcio Bonizi(usuário não autenticado)
    6 de Dezembro de 2013, 16:05

     

    Perry, esta dando certo, ja esta compilando no MSVS, graças as suas orientações, mas ao rodar o teste ele da uma exception do construtor da classe remote quando ele chama o metodo SetNamedPipeHandleState da api do windows, esta faltando configurar um pipe? eu subi o servidor de teste com o sim390, e ate me conectei com o pw3270 no servidor mas o programa não funcionou, eu preciso ativar algum serviço no pw3270 em execução ou no sim390?

    • 3f09f0772d9354bc3661d73bf02b0f60?only path=false&size=50&d=404Perry Werneck(usuário não autenticado)
      7 de Dezembro de 2013, 11:05

       

      Olá,

      O truque está no parâmetro enviado aos métodos start() ou create() (são iguais); se você passa um nome de sessão, por exemplo "pw3270:a" ele tenta se conectar a uma sessão pw3270 já aberta com aquele nome (cria um objeto do tipo "remote", é mais fácil para debuggar scripts), se você passar uma string vazia ( "" ) ele cria uma conexão própria com o host sem abrir uma janela (cria um objeto do tipo "local").

      Nas última revisões do svn ainda existe uma terceira opção: Se a string for "start" ou "new" ele levanta automaticamente uma nova instância do aplicativo completo e se conecta a ela.

       

       

Essa comunidade não possui posts nesse blog