Ir ao conteúdo
  • Cadastre-se
myNameX

Iniciar Programa feito em C++

Recommended Posts

Olá pessoal, eu criei um programa em C++ que utiliza MySQL pra fazer algumas consultas, depois de clicar em "Build" o arquivo foi criado na pasta

 

C:\Users\Admin\Documents\Visual Studio 2013\Projects\projeto\Debug\projeto.exe

 

Bom, eu tentei iniciar em uma Máquina Virtual que eu tenho e no meu Notebook e apresenta alguns erros de DLL MSVCR120D.dll, então eu baixei elas e apresentou um erro, eu gostaria de saber se é possível iniciar o programa sem utilizar essas dlls ou deixar-la dentro do programa, outra coisa também apresentou um erro

 

V1T6M7J.png

 

 

Poderia me ajudar a deixar tudo dentro do arquivo executável e os usuários que forem utilizar não precisarem baixar nada?

 

Até mais.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

você PODE Tenta reinstalar o Net Framework.. PODE também testar em outro pc.. E PODE também formatar a sua máquina.. Porq pelo que eu to vendo ai o erro não está no código que você criou, e sim, no net. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Windows precisa para fazer a interpretação do programa feito por você para com o Kernel, quando utilizada as bibliotecas do visual studio. Comumente em qualquer ferramenta da Microsoft para Windows.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou fazendo agora utilizando o Dev C++, já testei e só precisa da dll libmysql.dll que em breve irei por pra download junto com o meu software.

 

Agora estou com um problema.

 

 

Eu consegui pegar o IP do usuário mais está dando erro

    HINTERNET hInternet, hFile;    DWORD rSize;    char getip[47];    hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);    hFile = InternetOpenUrl(hInternet, "http://icanhazip.com", NULL, 0, INTERNET_FLAG_RELOAD, 0);    InternetReadFile(hFile, &getip, sizeof(getip), &rSize);    getip[rSize] = '\0';    InternetCloseHandle(hFile);    InternetCloseHandle(hInternet);     mysql_query(conn, "SELECT * FROM users WHERE IP='" + getip +"'");     

ERRO:

invalid operands of types `const char[35]' and `char[47]' to binary `operator+' 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro é por causa da atribuição da variável junto ao texto estático, na função "mysql_query()". Em C não funciona dessa maneira.

Tente assim:

char buffer_sql[250];sprintf(buffer_sql, "SELECT * FROM users WHERE IP='%s'", getip);mysql_query(conn, buffer_sql);
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro sumiu, mais não retorna nada, poderia verificar se está correto?

 

Quando eu coloco meu ip sem colocar WHERE IP='%s', no lugar de %s  ele funciona e com isso não funciona

    sprintf(buffer_sql, "SELECT * FROM users WHERE IP='%s'", getip);    mysql_query(conn, buffer_sql);    res = mysql_use_result(conn);    while ((row = mysql_fetch_row(res)) != NULL) {        std::cout << "Nome: " << row[2] << "";    }    mysql_free_result(res);    mysql_close(conn);   

Compartilhar este post


Link para o post
Compartilhar em outros sites

O MySQL receberá a string no formato que está sendo passado.

Tente executar diretamente no banco a query:

SELECT * FROM users WHERE IP='192.168.0.1'
Coloquei um IP como exemplo. Troque para um que seja válido pra você.

Veja se o banco aceita essa expressão, ou se precisa trocar as aspas simples por duplas.

SELECT * FROM users WHERE IP="192.168.0.1"
Se aceitar com aspas duplas, então troque no código para:

sprintf(buffer_sql, "SELECT * FROM users WHERE IP=\"%s\"", getip);
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Encontrei o problema é que está dando uma quebra de linha

printf("SELECT * FROM users WHERE IP='%s'", getip);

Saída

UrUmLwO.png

 

Só que não sei retirar quebra de linha.

 

 

Problema resolvido, muito obrigado ScreenBlack

std::string remover(std::string my_str) {    std::string retirar;    for(unsigned int x = 0; x < my_str.length(); x++) {        if(my_str[x] != '\n')            retirar += my_str[x];    }                return retirar;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

aproveitando o tópico, teria alguma função para fazer o download da dll "libmysql.dll" junto ao iniciar o programa? pois quando inicia o programa aparece um erro com a falta dessa dll.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×