boost c++  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
rodrigo.bossini
GUJ Master
[Avatar]

Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline

O que há de errado com o seguinte código em c++, usando a boost thread:


O código compila normal mas não executa. Simplesmente não imprime nada. Nem erro, nada. Tentei envolver o código do main em um try catch, com um cout << "erro"; no catch e tbm não imprime nada. Foi compilado com gcc 4.6.1 do minGW, Windows 7, boost 1.47, com a opção -l libboost_thread-mgw46-mt-d-1_47 para o gcc. Alguém (vinyGodoy, por exemplo, hehe) ?

http://www.rodrigobossini.com.br/

Meu Twitter:@rodrigobossini
Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo?
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Uai, rodei seu programa e funcionou direitinho (acho que no caso do mingw você precisa também acrescentar um cout.flush() - não preciso disso no Microsoft Visual C++ mas eu sei que normalmente no Linux/Unix você precisa dar um "flush" no cout)

Saída

O que usei para compilar
rodrigo.bossini
GUJ Master
[Avatar]

Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline

Então, meu código original tbm já tinha um flush no cout, só tirei pra postar aqui..e continua sem imprimir nada...

O que me preocupa é isso aqui:

If you plan to use your tools from the Windows command prompt, you're in the right place. If you plan to build from the Cygwin bash shell, you're actually running on a POSIX platform and should follow the instructions for getting started on Unix variants. Other command shells, such as MinGW's MSYS, are not supported?they may or may not work.

Pra ser sincero não sei bem se esse é meu caso..só sei q tenho o MinGW e o Msys instalados, e estou compilando o código com o gcc do MinGW, q na verdade invoco usando o Eclipse..


http://www.rodrigobossini.com.br/

Meu Twitter:@rodrigobossini
Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo?
rodrigo.bossini
GUJ Master
[Avatar]

Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline

Acho que "resolvi"...o que percebi é que no meu diretório "lib" da boost tem dois arquivos com o mesmo nome só que com extensões diferentes: .a e .dll. Tive a ideia de sair do eclipse e executar na mão o .exe gerado..ele me deu a feliz mensagem q o arquivo .dll estava faltando..copiei o arquivo na system32 e vualá..agora o treco todo funciona..
o que me preocupa, já que pra executar em outras máquinas terei de fazer o mesmo suponho eu..e vai saber se o arquivo .dll vai ser "compatível" em outras máquinas..
será que to vacilando em algo, alguma configuração q torne esse processo automático?

http://www.rodrigobossini.com.br/

Meu Twitter:@rodrigobossini
Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo?
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Há um bug na boost::thread que faz com que você seja obrigado a usar a versão DLL (não LIB) se não quiser ter alguns erros muito esquisitos.
Portanto, você será obrigado a distribuir essa DLL juntamente com seu código.
Você terá de criar um instalador para seu programa, ou no mínimo deixar a DLL no mesmo diretório do seu EXE, e testar em algumas máquinas - por exemplo, Windows / 32 bits, Windows / 64 bits, Windows 7, Windows Vista, Windows XP ...
rodrigo.bossini
GUJ Master
[Avatar]

Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline

entanglement wrote:Há um bug na boost::thread que faz com que você seja obrigado a usar a versão DLL (não LIB) se não quiser ter alguns erros muito esquisitos.
Portanto, você será obrigado a distribuir essa DLL juntamente com seu código.
Você terá de criar um instalador para seu programa, ou no mínimo deixar a DLL no mesmo diretório do seu EXE, e testar em algumas máquinas - por exemplo, Windows / 32 bits, Windows / 64 bits, Windows 7, Windows Vista, Windows XP ...


puxa..que desgraça..com todas as letras..
rodrigo.bossini
GUJ Master
[Avatar]

Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline

Aproveitando o tópico e a boa vontade..no diretório lib da boost tenho diversas opções de thread pra escolher..os nomes diferem nas letras finais antes da extensão..
sabe dizer a diferença entre cada um desses aí (vide imagem anexa)?
[Thumb - threads.png]
 Nome do arquivo threads.png [Disk] Download
 Descrição
 Tamanho 18 Kbytes
 Baixado:  15 vez(es)


http://www.rodrigobossini.com.br/

Meu Twitter:@rodrigobossini
Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo?
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

mgw46 = MinGW 4.6
mt = Multi-threaded
1_47 = Boost 1.47
s = static linking
d = debug
sd = static debug
.dll.a = biblioteca de imports para a .dll
.a = biblioteca estática simples
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team