| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2011 07:40:28
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
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? |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2011 07:48:16
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2011 07:53:12
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
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? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2011 08:11:14
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
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? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2011 08:14:56
|
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 ...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2011 08:15:50
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
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..
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2011 08:43:15
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
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)?
|
| Nome do arquivo |
threads.png |
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? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2011 08:51:14
|
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
|
|
|
 |
|
|