Problema com bibliotecas [RESOLVIDO]

1. Problema com bibliotecas [RESOLVIDO]

Rafael Carreiro
r_carreiro

(usa Ubuntu)

Enviado em 23/03/2015 - 10:33h

Olá galera, estou começando a programar na faculdade e por usar um Sistema Operacional direfente da maioria dos outros alunos da minha turma estou com um problema.
Na matéria de Algoritmos estamos aprendendo C/C++ todos usam o Dev C/C++, porém na minha máquina optei por instalar o CodeBlocks versão 13.12 e está acontecendo o seguinte...
Nos exemplos que o professor da ele inicia os exercícios como um documento vazio e cria os algitmos e roda normalmente, no meu caso isso funciona somente com algoritmos que não importem bibliotecas como iostream.h e conio.h da erro e diz que o arquivo ou diretório não foi encontrado, já se eu criar um projeto novo no CodeBlocks e utilizar o mesmo algoritmo ele funciona normalmente.
Gostaria de saber onde está o problema, pois gosto de criar os algoritmos em programas mais simples como gedit, geany ou mesmo no próprio terminal, é desagradavel ter de criar novos projetos e marcar a opção C++ sempre que for fazer um exercício diferente, acho desnecessário.
Agradeço desde já pela ajuda e até mais.


  


2. Re: Problema com bibliotecas

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/03/2015 - 11:49h

r_carreiro escreveu:

Nos exemplos que o professor da ele inicia os exercícios como um documento vazio e cria os algitmos e roda normalmente, no meu caso isso funciona somente com algoritmos que não importem bibliotecas como iostream.h e conio.h da erro e diz que o arquivo ou diretório não foi encontrado, já se eu criar um projeto novo no CodeBlocks e utilizar o mesmo algoritmo ele funciona normalmente.


Acredito que nenhum algoritmo digno do nome dependa de conio.h. Cuidado para não confundir algoritmo com programa.

Se o seu professor está ensinando a usar "iostream.h", ele está há pelo menos 17 anos parado no tempo. O padrão de 1998 do C++ aboliu os sufixos ".h" nos nomes de cabeçalhos padronizados pela linguagem, reservando-os para uso dos cabeçalhos escritos em C, assim evitando confusão (por exemplo: entre o cabeçalho <string>, que declara em C++ as classes de strings baseadas em templates, e o <string.h>, que declara as funções de strings do C, que operam sobre arrays de caracteres terminados com um byte nulo).

Além disso, conio.h é um quebra-galhos do mundo DOS, da época dos TurboC e TurboPascal da vida, e a maioria dos programinhas de cursos introdutórios que a utiliza o faz somente para conseguir uma pausa ao final do programa ou para fazer firulas inúteis (especialmente do ponto de vista de quem deveria aprender algoritmos), tais como trocar cor de letra ou colocar caracteres piscantes. Seu professor não deveria perder tempo com essas tolices.


3. Re: Problema com bibliotecas [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/03/2015 - 13:12h

r_carreiro escreveu:

Olá galera, estou começando a programar na faculdade e por usar um Sistema Operacional direfente da maioria dos outros alunos da minha turma estou com um problema.
Na matéria de Algoritmos estamos aprendendo C/C++ todos usam o Dev C/C++, porém na minha máquina optei por instalar o CodeBlocks versão 13.12 e está acontecendo o seguinte...
Nos exemplos que o professor da ele inicia os exercícios como um documento vazio e cria os algitmos e roda normalmente, no meu caso isso funciona somente com algoritmos que não importem bibliotecas como iostream.h e conio.h da erro e diz que o arquivo ou diretório não foi encontrado, já se eu criar um projeto novo no CodeBlocks e utilizar o mesmo algoritmo ele funciona normalmente.
Gostaria de saber onde está o problema, pois gosto de criar os algoritmos em programas mais simples como gedit, geany ou mesmo no próprio terminal, é desagradavel ter de criar novos projetos e marcar a opção C++ sempre que for fazer um exercício diferente, acho desnecessário.
Agradeço desde já pela ajuda e até mais.




Você está usando bibliotecas exclusivas do Windows.

Você pode usar o Wine para instalar o Dev C/C++ e rodar seus algoritmos como se estivesse no Windows.


4. Re: Problema com bibliotecas [RESOLVIDO]

Ciro
CiroboyBR

(usa Debian)

Enviado em 25/03/2015 - 07:10h

r_carreiro escreveu:

Olá galera, estou começando a programar na faculdade e por usar um Sistema Operacional direfente da maioria dos outros alunos da minha turma estou com um problema.
Na matéria de Algoritmos estamos aprendendo C/C++ todos usam o Dev C/C++, porém na minha máquina optei por instalar o CodeBlocks versão 13.12 e está acontecendo o seguinte...
Nos exemplos que o professor da ele inicia os exercícios como um documento vazio e cria os algitmos e roda normalmente, no meu caso isso funciona somente com algoritmos que não importem bibliotecas como iostream.h e conio.h da erro e diz que o arquivo ou diretório não foi encontrado, já se eu criar um projeto novo no CodeBlocks e utilizar o mesmo algoritmo ele funciona normalmente.
Gostaria de saber onde está o problema, pois gosto de criar os algoritmos em programas mais simples como gedit, geany ou mesmo no próprio terminal, é desagradavel ter de criar novos projetos e marcar a opção C++ sempre que for fazer um exercício diferente, acho desnecessário.
Agradeço desde já pela ajuda e até mais.



O paulo explicou bem, mas resumindo, tire "iostream.h" e coloque " iostream", não me recordo mas acho que a conio é padrão do C, então nesse caso deve ficar "conio.h" mesmo.



#include <iostream>
#include <conio.h>


se não funcionar compila no shell mesmo e paga de hacker na faculdade...




5. Re: Problema com bibliotecas [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 25/03/2015 - 09:52h

ciroboy escreveu:

O paulo explicou bem, mas resumindo, tire "iostream.h" e coloque " iostream", não me recordo mas acho que a conio é padrão do C, então nesse caso deve ficar "conio.h" mesmo.


Cuidado! ConIO (abreviação de de console input and output) não é padrão do C, existindo apenas em alguns compiladores para MS-DOS (ou em pacotes de compatibilidade com MS-DOS para compiladores para Windows). Mesmo na época do MS-DOS, diferentes compiladores tinham conjuntos diferentes de operações suportadas em sua própria versão de ConIO (até onde eu conheci, a ConIO dos compiladores da Borland era a mais extensa).

Mas numa coisa você está certo: como a ConIO foi especificamente projetada para ser usada com C, o arquivo de cabeçalhos correspondente usa o sufixo ".h". E como ela não é uma biblioteca padronizada do C, não possui um correspondente em C++ (ao contrário de <stdlib.h> ou <stdio.h>, por exemplo, que, sendo parte do padrão do C, são rebatizados no padrão do C++ como <cstdlib> e <cstdio>, respectivamente).


6. Re: Problema com bibliotecas

Rafael Carreiro
r_carreiro

(usa Ubuntu)

Enviado em 27/03/2015 - 12:19h

paulo1205 escreveu:

r_carreiro escreveu:

Nos exemplos que o professor da ele inicia os exercícios como um documento vazio e cria os algitmos e roda normalmente, no meu caso isso funciona somente com algoritmos que não importem bibliotecas como iostream.h e conio.h da erro e diz que o arquivo ou diretório não foi encontrado, já se eu criar um projeto novo no CodeBlocks e utilizar o mesmo algoritmo ele funciona normalmente.


Acredito que nenhum algoritmo digno do nome dependa de conio.h. Cuidado para não confundir algoritmo com programa.

Se o seu professor está ensinando a usar "iostream.h", ele está há pelo menos 17 anos parado no tempo. O padrão de 1998 do C++ aboliu os sufixos ".h" nos nomes de cabeçalhos padronizados pela linguagem, reservando-os para uso dos cabeçalhos escritos em C, assim evitando confusão (por exemplo: entre o cabeçalho <string>, que declara em C++ as classes de strings baseadas em templates, e o <string.h>, que declara as funções de strings do C, que operam sobre arrays de caracteres terminados com um byte nulo).

Além disso, conio.h é um quebra-galhos do mundo DOS, da época dos TurboC e TurboPascal da vida, e a maioria dos programinhas de cursos introdutórios que a utiliza o faz somente para conseguir uma pausa ao final do programa ou para fazer firulas inúteis (especialmente do ponto de vista de quem deveria aprender algoritmos), tais como trocar cor de letra ou colocar caracteres piscantes. Seu professor não deveria perder tempo com essas tolices.


Olá Paulo, obrigado pela resposta, e acredito que esteja certo, porém seria indelicado de minha parte questionar a metodologia que o professor utiliza nas aulas, ele tem uma boa experiência na área e talvez seja uma forma eficaz de ensinar a galera, a maioria nunca viu linguagem de programação qualquer que seja, então prefiro seguir as aulas mas me adaptando no mundo linux :-)


7. Re: Problema com bibliotecas [RESOLVIDO]

Rafael Carreiro
r_carreiro

(usa Ubuntu)

Enviado em 27/03/2015 - 12:22h

bilufe escreveu:

r_carreiro escreveu:

Olá galera, estou começando a programar na faculdade e por usar um Sistema Operacional direfente da maioria dos outros alunos da minha turma estou com um problema.
Na matéria de Algoritmos estamos aprendendo C/C++ todos usam o Dev C/C++, porém na minha máquina optei por instalar o CodeBlocks versão 13.12 e está acontecendo o seguinte...
Nos exemplos que o professor da ele inicia os exercícios como um documento vazio e cria os algitmos e roda normalmente, no meu caso isso funciona somente com algoritmos que não importem bibliotecas como iostream.h e conio.h da erro e diz que o arquivo ou diretório não foi encontrado, já se eu criar um projeto novo no CodeBlocks e utilizar o mesmo algoritmo ele funciona normalmente.
Gostaria de saber onde está o problema, pois gosto de criar os algoritmos em programas mais simples como gedit, geany ou mesmo no próprio terminal, é desagradavel ter de criar novos projetos e marcar a opção C++ sempre que for fazer um exercício diferente, acho desnecessário.
Agradeço desde já pela ajuda e até mais.




Você está usando bibliotecas exclusivas do Windows.

Você pode usar o Wine para instalar o Dev C/C++ e rodar seus algoritmos como se estivesse no Windows.



bilufe, então cara, já tentei essa opção também mas acontece o mesmo



8. Re: Problema com bibliotecas [RESOLVIDO]

Rafael Carreiro
r_carreiro

(usa Ubuntu)

Enviado em 27/03/2015 - 12:44h

ciroboy escreveu:

r_carreiro escreveu:

Olá galera, estou começando a programar na faculdade e por usar um Sistema Operacional direfente da maioria dos outros alunos da minha turma estou com um problema.
Na matéria de Algoritmos estamos aprendendo C/C++ todos usam o Dev C/C++, porém na minha máquina optei por instalar o CodeBlocks versão 13.12 e está acontecendo o seguinte...
Nos exemplos que o professor da ele inicia os exercícios como um documento vazio e cria os algitmos e roda normalmente, no meu caso isso funciona somente com algoritmos que não importem bibliotecas como iostream.h e conio.h da erro e diz que o arquivo ou diretório não foi encontrado, já se eu criar um projeto novo no CodeBlocks e utilizar o mesmo algoritmo ele funciona normalmente.
Gostaria de saber onde está o problema, pois gosto de criar os algoritmos em programas mais simples como gedit, geany ou mesmo no próprio terminal, é desagradavel ter de criar novos projetos e marcar a opção C++ sempre que for fazer um exercício diferente, acho desnecessário.
Agradeço desde já pela ajuda e até mais.



O paulo explicou bem, mas resumindo, tire "iostream.h" e coloque " iostream", não me recordo mas acho que a conio é padrão do C, então nesse caso deve ficar "conio.h" mesmo.



#include <iostream>
#include <conio.h>


se não funcionar compila no shell mesmo e paga de hacker na faculdade...




ciroboy, ele não encontra a biblioteca iostream, este é o problema, mas porque no CodeBlocks quando crio um projeto novo e marco as opções C++ funciona normalmente, veja o programa de exemplo que roda no CodeBlocks :


#include <iostream>

using namespace std;

int main()
{
cout << "Hello world!" << endl;
return 0;
}


Se eu salvar como .c e tentar compilar com cc nome.c da este erro:

 $ cc vol.c
vol.c:1:20: fatal error: iostream: Arquivo ou diretório não encontrado
#include <iostream>
^
compilation terminated.


Se salvar como .cpp gera este outro...

$ cc vol.cpp 
/tmp/ccHl1oMm.o: na função `main':
vol.cpp:(.text+0x14): referência indefinida para `std::cout'
vol.cpp:(.text+0x19): referência indefinida para `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
vol.cpp:(.text+0x21): referência indefinida para `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
vol.cpp:(.text+0x29): referência indefinida para `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/tmp/ccHl1oMm.o: na função `__static_initialization_and_destruction_0(int, int)':
vol.cpp:(.text+0x51): referência indefinida para `std::ios_base::Init::Init()'
vol.cpp:(.text+0x68): referência indefinida para `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status




9. Re: Problema com bibliotecas [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 27/03/2015 - 14:22h

r_carreiro escreveu:

Olá Paulo, obrigado pela resposta, e acredito que esteja certo, porém seria indelicado de minha parte questionar a metodologia que o professor utiliza nas aulas, ele tem uma boa experiência na área e talvez seja uma forma eficaz de ensinar a galera, a maioria nunca viu linguagem de programação qualquer que seja, então prefiro seguir as aulas mas me adaptando no mundo linux :-)


Bem, eu creio que devo desculpas. Soou mesmo como se eu reprovasse completamente as aulas que você está tendo.

Espero que você entenda que não foi minha intenção sugerir que você deveria expor ou humilhar seu professor. Na verdade, eu apenas acho lamentável que ele, assim como muitos outros, fique preso ao passado e, de certa forma, acabe prendendo também seus alunos.


10. Re: Problema com bibliotecas [RESOLVIDO]

Rafael Carreiro
r_carreiro

(usa Ubuntu)

Enviado em 27/03/2015 - 15:27h

paulo1205 escreveu:

r_carreiro escreveu:

Olá Paulo, obrigado pela resposta, e acredito que esteja certo, porém seria indelicado de minha parte questionar a metodologia que o professor utiliza nas aulas, ele tem uma boa experiência na área e talvez seja uma forma eficaz de ensinar a galera, a maioria nunca viu linguagem de programação qualquer que seja, então prefiro seguir as aulas mas me adaptando no mundo linux :-)


Bem, eu creio que devo desculpas. Soou mesmo como se eu reprovasse completamente as aulas que você está tendo.

Espero que você entenda que não foi minha intenção sugerir que você deveria expor ou humilhar seu professor. Na verdade, eu apenas acho lamentável que ele, assim como muitos outros, fique preso ao passado e, de certa forma, acabe prendendo também seus alunos.


Que nada, ta tudo bem, entendi o seu ponto de vista, aliás devo lhe agradecer pelo comentário que de certa forma já me fez enxergar este ponto, talvez eu levaria um tempo para perceber isso sozinho pela minha falta de experiência.

Mas enfim, peguei o livro C++ como programar 3ª ed. do autor Deitel e acho que vai ser uma boa se basear nele. Porém, preciso resolver este problema de bibliotecas que está me atormentando kkk

Att.


11. Resolvido

Rafael Carreiro
r_carreiro

(usa Ubuntu)

Enviado em 29/03/2015 - 23:43h


Galera, enfim consegui resolver com a ajuda de um amigo que já programa a um tempo.
Era simples, só utilizar o código:
g++ -o nome_novo_arquivo nome_arquivo.cpp 


Vallew brunocriado!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts