Ir ao conteúdo
  • Cadastre-se

C++ Erro do compilador na programação web


Daniel Bittencourt

Posts recomendados

Oi eu estou treinando como programar na web com um tutorial no youtube em c++(com o tcp), mas não tem essa tag aqui não sei por que, dá um erro de referencia indefinida a alguns comandos, e eu tenho quase certeza que a causa é a falta de algum comando no compilador, alguém sabe esse comando??

 

Obs:uso dev c++.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Qual TAG? Se mostrar o código fica mais fácil verificar.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Luís Roberto C. da Silva o código não muda nada mesmo porque ele n tem nada na execução, somente falta um comando nas opções do compilador, algum para programar na web, de qualquer forma, tenho aqui o programa 

include <WS2tcpip.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include<process.h>
#include <fstream>
#pragma comment (lib, "ws2.lib")
using namespace std;

int main()
{
	WSADATA wsData;
    WORD ver = MAKEWORD(2,2); 
    
	int wsOK = WSAStartup(ver, &wsData); 
    if(wsOK != 0){
    	return 0;
	}
    SOCKET listening = socket(AF_INET,SOCK_STREAM,0);
}

e o erro:

C:\Users\Deusimar\AppData\Local\Temp\ccfOaPDj.o	tcp.cpp:(.text+0x31): undefined reference to `WSAStartup@8'
C:\Users\Deusimar\AppData\Local\Temp\ccfOaPDj.o	tcp.cpp:(.text+0x60): undefined reference to `socket@12'
D:\Documents\collect2	ld returned 1 exit status

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Isso foi erro ao copiar e colar o código ou erro de digitação do código:

include <WS2tcpip.h> // <- está faltando a cerquilha
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include<process.h>
#include <fstream>

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Tem que incluir essa biblioteca: Ws2_32.dll

adicionado 2 minutos depois

Ah deu certo aqui.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Em 31/08/2020 às 12:44, Daniel Bittencourt disse:

Oi eu estou treinando como programar na web com um tutorial no youtube em c++(com o tcp), mas não tem essa tag aqui não sei por que, dá um erro de referencia indefinida a alguns comandos, e eu tenho quase certeza que a causa é a falta de algum comando no compilador, alguém sabe esse comando

 

O que é "programar na web"?

 

WSAstartup()  serve apenas para iniciar Windows Sockets, a camada TCP/IP no Windows. Isso não tem a ver com programar na web exceto pelo fato de TCP/IP ser a camada de transporte em uso na internet.

 

Você pode usar sockets para comunicar programas que rodam na sua máquina, ou para imprimir em certas impressoras, ou para transferir arquivos para o computador ao lado...

 

O que seria uma "tag"?

 

Nada tem a ver com o compilador. Apenas com o link. Precisa ver como esse seu ambiente identifica aquela biblioteca. 

image.png.f987827cf75f9e4f90b632faa502bce5.png

 

Provavelmente nesse formulário acima

 

Talvez devesse usar software da Microsoft para escrever coisas para Windows Sockets. Aí não teria que configurar nada. Tem um exemplo de uso em https://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-wsastartup onde tem a documentação toda.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Baixe a biblioteca ws2_32.dll e coloque ela junto ao arquivo do código.

No código mude essa linha:

#pragma comment (lib, "ws2.lib")
//para
#pragma comment (lib, "ws2_32.dll")

E acrescente ao comando de compilar esse trecho:

-lws2_32

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@arfneto sim pelo visto usei o termo errado quando disse programar na web, a tag era por que escrevi primeiro no fórum da programação web e não havia a tag de c++ para identificar, e era exatamente nessa caixa que eu quero saber o que pôr, mas eu não entendo bem os comandos que ficam lá, na minha caixa tem isso

-lgdi32

o que eu ponho?

adicionado 1 minuto depois

@Luís Roberto C. da Silva pelo tutorial que vi no youtube e bem, estava copiando de lá para depois ler e adaptar para o que eu quero, não é necessário nenhuma biblioteca externa, não acho necessário. 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

g++ programa.c -o programa -lws2_32

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 minuto atrás, Daniel Bittencourt disse:

@arfneto sim pelo visto usei o termo errado quando disse programar na web, a tag era por que escrevi primeiro no fórum da programação web e não havia a tag de c++ para identificar, e era exatamente nessa caixa que eu quero saber o que pôr, mas eu não entendo bem os comandos que ficam lá, na minha caixa tem isso


-lgdi32

o que eu ponho?

 

completando o desenho que mandei 

image.png.b8481164bd8d53acbed88a0475827dea.png

 

E veja o exemplo na documentação, onde eu te disse.  Vai ajudar.

 

WSAstartup() é só o começo da negociação pra usar sockets em windows.

 

 

adicionado 19 minutos depois

De todo modo entenda que

  • não é um erro do compilador
  • não é programação web

 

Um erro de compilação seria algo com os parâmetros para a chamada, ou função não encontrada devido à configuração de includes ou algo assim. Afinal está usando gcc como compilador. 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Redes-Wi-Fi-capa-3d-newsletter.png

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!