Hola, estoy haciendo un pequeño programa para comunicarme a través del puerto serie en Ubuntu. El problema es que aunque hago un include de SerialPort.h parece que el compilador no lo encuentra.
Ejecuto: g++ PruebaPuerto.cpp y la salida del compilador es:
/tmp/cc8wej22.o: In function `main':
PruebaPuerto.cpp:(.text+0x7b): undefined reference to `SerialPort::SerialPort(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
PruebaPuerto.cpp:(.text+0xdf): undefined reference to `SerialPort::Open(SerialPort::BaudRate, SerialPort::CharacterSize, SerialPort::Parity, SerialPort::StopBits, SerialPort::FlowControl)'
PruebaPuerto.cpp:(.text+0xf3): undefined reference to `SerialPort::~SerialPort()'
PruebaPuerto.cpp:(.text+0x209): undefined reference to `SerialPort::Write(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
PruebaPuerto.cpp:(.text+0x241): undefined reference to `SerialPort::Read(std::vector<unsigned char, std::allocator<unsigned char> >&, unsigned int, unsigned int)'
PruebaPuerto.cpp:(.text+0x348): undefined reference to `SerialPort::Close()'
PruebaPuerto.cpp:(.text+0x395): undefined reference to `SerialPort::~SerialPort()'
PruebaPuerto.cpp:(.text+0x3ab): undefined reference to `SerialPort::~SerialPort()'
collect2: ld returned 1 exit status
El código del programa es:
#include <iostream>
#include <SerialPort.h>
using namespace std;
string entrada = "";
int main(int argc, char **argv)
{
if (argc<2) {
cerr << "Falta el puerto serie a abrir" << endl;
return 1;
}
SerialPort puerto(argv[1]);
try {
puerto.Open(SerialPort::BAUD_115200,
SerialPort::CHAR_SIZE_8,
SerialPort::PARITY_NONE,
SerialPort::STOP_BITS_1,
SerialPort::FLOW_CONTROL_NONE);
}
catch (SerialPort::OpenFailed E) {
cerr << "Error abriendo el puerto" << endl;
return 1;
}
cout << "Escribe lo que quieres enviar" << endl;
getline(cin,entrada);
puerto.Write(entrada);
SerialPort::DataBuffer buf;
try {
puerto.Read(buf,entrada.size(),500);
}
catch (SerialPort::ReadTimeout E) {
cout << "TIMEOUT!";
return 1;
}
for(int i=0; i < buf.size(); i++){
cout << buf[i];
}
cout << endl;
puerto.Close();
}
¿Alguna idea de qué puede ser?