Olá a todos!
Esses dias me aconteceu uma coisa um tanto quanto inusitada. Eu tinha lá uma biblioteca em C, que funcionava legalzinha. Fiz alguns testes com ela, fiz alguns programas de teste e tudo ok. Mas quando fui integrá-la com o aplicativo principal em C++… sempre dava erro de referência! Apesar de ter configurado o linker, ele não encontrava as funções da biblioteca…
A biblioteca em questão foi a fprint. A princípio, meu código estava assim:
#include <iostream> #include <libfprint/fprint.h> int main(int argc, char* argv[]) { int retorno = fp_init(); std::cout << retorno << std::endl; fp_exit(); return 0; }
O comando pra compilar foi o seguinte:
g++ -lfprint -o executavel main.cpp
Mas quem disse que funcionava? O compilador me retornava a mensagem “undefined reference to ‘fp_init()’” e “undefined reference to ‘fp_exit()’“. Depois de revirar a Internet, descobri que ao utilizar uma biblioteca feita em C, em uma aplicação C++, você precisa explicitar isso. Dessa forma, meu código ficou assim:
#include <iostream> extern "C" { #include <libfprint/fprint.h> } int main(int argc, char* argv[]) { int retorno = fp_init(); std::cout << retorno << std::endl; fp_exit(); return 0; }
E pronto. Tudo resolveu-se!
Espero ter ajudado, e em breve retorno com mais posts (estou provisoriamente sem computador… :().
Abraço a todos!