Ошибка компиляции GCC: должно быть доступно объявление "strlen" - PullRequest
5 голосов
/ 27 октября 2009

Моя проблема в том, что когда я хочу создать загруженную библиотеку, я получаю странные ошибки компиляции из GCC , и код, который компилятор требует исправить, кажется, является правильным.

Все ошибки такие:

Catalogue.h: 96: ошибка: нет аргументы "strlen", которые зависят от параметр шаблона, поэтому объявление «strlen» должен быть доступен

Вот код вокруг строки 96:

GaCatalogueEntry(const char* name, T* data)
{
    if( name )
    {
        _nameLength = (int)strlen( name ); // LINE 96

        // copy name
        _name = new char[ _nameLength + 1 ];
        strcpy( _name, name );       // LINE 100: similar error

        _data = data;

        return;
    }

    _name = NULL;
    _nameLength = 0;
    _data = NULL;
}

Что я могу сделать, чтобы исправить эти ошибки компиляции?

Ответы [ 4 ]

10 голосов
/ 27 октября 2009

Возможно, вам просто нужно включить заголовок, содержащий библиотечные функции strcpy и strlen.

#include <string.h>

или (предпочтительно для C ++)

#include <cstring>
4 голосов
/ 27 октября 2009

В C ++ функция strlen () является частью строковой библиотеки, и похоже, что заголовочный файл не был включен.

Включено ли это где-нибудь?

include <string.h>

Если нет, попробуйте добавить его и посмотреть, решит ли это проблему.

3 голосов
/ 27 октября 2009

Код глючит. Возможно, вам не хватает #include <string.h>.

Если вы не хотите изменять код, добавьте -fpermissive в опции компилятора. (См. Документацию GCC .)

1 голос
/ 27 октября 2009

должна быть доступна декларация "strlen"

Включите string.h или <cstring> (C ++) для объявления strlen().

...