Este parece ser o resultado de um bug no código-fonte do programa (pelo menos no caso específico em que você forneceu detalhes). Mas felizmente é uma que você pode trabalhar sem muito problema!
Como este é um problema recorrente e acontece frequentemente quando o código-fonte de um programa testado em outra plataforma (mais frequentemente Windows) é trazido para o Ubuntu, provavelmente devemos considerar essa questão no tópico, embora envolva erros e programação. Com isso dito, reportar o bug para o desenvolvedor do programa é uma ação apropriada também.
Parece que uma das seguintes situações se aplica:
- Na (s) plataforma (s) onde o programa foi desenvolvido e testado, o (s) arquivo (s) de cabeçalho que fornecem identificadores como
strlen
foram indiretamente incluídos sendo puxados pela implementação de algum outro arquivo de cabeçalho . Isto é involuntariamente comportamento específico da implementação. - Algumas implementações estranhas da biblioteca padrão C ++ permitem muitas coisas que são tecnicamente proibidas e algumas coisas que são conceitualmente impossíveis. (Isso não os torna ruins no geral, necessariamente.) Acredito que algumas versões da biblioteca C ++ da Microsoft oferecem a você funções como
strlen
como identificadores globais mesmo do C ++ em estilo#include
s como#include <cstring>
. Isso não funcionará com o GCC / g ++ no Ubuntu.
Em ambos os casos, você provavelmente terá que editar um pouco o código-fonte, como ponteiro nulo sugerido . Como isso é bastante simples, podemos orientá-lo através deste se você nos informar exatamente quais arquivos você baixou e quais etapas você tomou antes de executar make
. Você pode editar sua pergunta para incluir esta informação também.
O conselho do ponteiro nulo para adicionar algo como #include <string.h>
no topo dos arquivos onde os erros estão ocorrendo provavelmente funcionará. Pode ou não ser a melhor maneira de corrigir isso. Se a situação 2 for o que está acontecendo, uma instrução using
para as palavras-chave necessárias (ou o namespace std
inteiro, se necessário) seria suficiente.