[SOLUCIONADO] Compilar C++ en Code::Blocks

Iniciado por Meta, Marzo 27, 2017, 04:52:03 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Marzo 27, 2017, 04:52:03 PM Ultima modificación: Marzo 28, 2017, 03:18:58 PM por Gabriela
Hola:

Hice un programa que me ejecuta en C++ Win32 con Visual Stduio Community 2017, pero si lo compilo con code::blocks me da errores.
El código que he hecho es este.
Código: php
#include <iostream>
#include <fstream>
#include <Windows.h>
#include "SerialClass.h"
using namespace std;

void main()
{
// Título de la ventana
SetConsoleTitle("Control Led Arduino - Visual Studio C++ 2017");

// Puerto serie.
Serial* Puerto = new Serial("COM4");

// Comandos para Arduino.
char Luz_ON[] = "Luz_ON"; // Envía "Luz_ON" al puerto serie.
char Luz_OFF[] = "Luz_OFF";
char lectura[50] = "\0"; // Guardan datos de entrada del puerto.

int opc; // Guarda un 1 o 2 tipo entero queintroduces desde la consola.

while (Puerto->IsConnected())
{
cout << endl; // Dejamos un retorno.
cout << "Introduzca la opcion deseada: " << endl << endl; // Muestra texto en pantalla.

cin >> opc; // Aquí introduces un número, el 1 o el 2.

switch (opc) // Espera recibir un 1 o un 2.
{
case 1:
// Encener luz.
cout << "Enviando: " << Luz_ON << endl; // Muestra en pantalla textos.
Puerto->WriteData(Luz_ON, sizeof(Luz_ON) - 1); // Envía al puerto el texto "Luz_ON".
break;

case 2:
// Apagar luz.
cout << "Enviando: " << Luz_OFF << endl;
Puerto->WriteData(Luz_OFF, sizeof(Luz_OFF) - 1);
break;

default: // Si haz pulsado otro número distinto del 1 y 2, muestra
cout << "Puse del 1 al 2."; // este mensaje.
}


Sleep(250);
int n = Puerto->ReadData(lectura, 49);
if (n > 0)
{
lectura[n + 1] = '\0';
cout << "Recibido: " << lectura << endl;
cout << "-------------------" << endl;
}

cin.ignore(256, '\n'); // Limpiar buffer del teclado.
}
}


Errores indicado es este:
Citar||=== Build: Debug in Arduino_Led (compiler: GNU GCC Compiler) ===|
C:\Users\Meta\Documents\Code Blocks\Arduino_Led\Arduino_Led\main.cpp|13|error: '::main' must return 'int'|
C:\Users\Meta\Documents\Code Blocks\Arduino_Led\Arduino_Led\main.cpp||In function 'int main()':|
C:\Users\Meta\Documents\Code Blocks\Arduino_Led\Arduino_Led\main.cpp|19|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|
||=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 1 second(s)) ===|

¿Alguna solución?

Saludos.

Esto es lo que pasa cuando usas distintos compiladores, cada uno es de su padre y de su madre. pero basicamente en code block creo que el main se declara int main() aunque el contenido sea un string, y el otro error que te da simplemente es que hay una etiqueta deprecada, es decir que ahora para hacer lo mismo se hace de otra forma, y creo que te los marca en el código que comentas de comandos para arduino. Intenta cambiar eso del main, y sino a ver si saco un ratejo y lo compilo de las dos formas.


hola interesante estuve mirando un poco tu codigo veo que usas "serialclass.h" busque algo de informacion sobre esta funcion? por que me da la impresion que no es una libreria perdona mi ignoracia, ¿me podrias explicar un poco tu codigo ?

Marzo 28, 2017, 05:56:28 PM #4 Ultima modificación: Marzo 28, 2017, 05:59:29 PM por Windux
Buenas @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.Tru  en una cabecera de programa además de más cosas puedes ver esto

#include <iostream>   <---  esta sintaxis se usa para incluir librerias propias del lenguaje en este caso C++ que estan en el compilador, es decir las librerias standar

#include "serialloquesea.h"   <---  esta sintaxis lo que hace es busca este fichero primero en el mismo directorio, y  se usa para cuando quiero incluir una libreria (por llamarlo de una forma), o si lo entiendes mejor, es una forma de incluir código propio (esto se suele usar para cuando ese pedazo de codigo, se va usar en varios archivos).

Es una de las formas hay más espero haberte ayudado en algo..... en resumen, es una libreria, pero hecha por él mismo o incluso otra persona...

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Buenas @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.Tru  en una cabecera de programa además de más cosas puedes ver esto

#include <iostream>   <---  esta sintaxis se usa para incluir librerias propias del lenguaje en este caso C++ que estan en el compilador, es decir las librerias standar

#include "serialloquesea.h"   <---  esta sintaxis lo que hace es busca este fichero primero en el mismo directorio, y  se usa para cuando quiero incluir una libreria (por llamarlo de una forma), o si lo entiendes mejor, es una forma de incluir código propio (esto se suele usar para cuando ese pedazo de codigo, se va usar en varios archivos).

Es una de las formas hay más espero haberte ayudado en algo..... en resumen, es una libreria, pero hecha por él mismo o incluso otra persona...
bueno bueno sere noob en la programacion pero tampoco tanto XD, mi duda creo que no la palantee bien el "serialclass.h" me llamo mas la atencion que nada, segun los comentarios dentro de las lineas de codigo hace referencia a la funcion de prender y apagar algo  supongo que la pantalla de windows.
PD: tampoco para que me remarques una de las librerias mas basicas de c++ "iostream" XD igual despues que termine  el libro le pegare un ojo mejor a las funciones y librerias, junto con la funcion de los ficheros

Hola a todos y a todas:

Uso una librería de terceros de este No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Lo que apago y enciendo es un Led de Arduino, también cambio los mensajes en un LCD. En este caso a Visual C++ 2017.


Estoy haciendo un tutorial similar a otros que he No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para que se hagan una idea.
He acabado la parte de Visual C++ 2017. En este mismo momento que estoy escribiendo estos textos, también lo que están leyendo, estoy haciendo la parte de Code::Blocks, cuando acabe, empizo con el C++ Builder Starter. Con Dev C++ no hago nada porque el sustituto es el Code::Blocks y aún hay personas que no lo saben.

Cuando acabe, presentaré aquí el tutorial, se lo descargan en el visor o directamente en PDF, también habrá mini ejemplos en vídeo para verlo en youtube de que va. ;)

Un cordial saludo.

hola si estuve viendo  que era para prender algo es interesante, lo que note en este post es la diferencia de sintaxis de texto a la hora de programar dependiendo el compilador en este caso el "int main" y "void main" nunca me di cuenta mucho de este por que siempre trabaje en codeblocks el devc++ nunca me gusto admito que anda mucho mejor que el codeblock y sali muy pocas veces de las librerias standar mas por temas de no saber instalarlas XD.
donde hagas los tutos por mi parte se aprecia esto no soy muy fan de copy paste, pero si de ver la sintaxis entender lo que hizo el otro en el codigo y de ahi hacer algo similar o mejor, onda aprendo golpeandome contra la pared hasta atravesarla en vez de saltarla. Saludos gente

Hola:

Dev C++ y Code::Blocks está bien para aplicaciones rápidas, ni tiene tantas cosas en el IDE que Visual Studio y C++ Builder.
Sigo con el tutorial, ahora con Code:Blocks.


El tutorial no es de programación, sino saber enviar y recibir datos del puerto serie / USB, instalar su libreía y poco más. Es para novatos, lo demás, hasta donde llegue su imaginación.

Si te digo la verdad, prefiero Visual C++ de Microsoft, como IDE es la leche, como compilador los hay mejores que este. Todo hay que decirlo.

Saludos.