2015-02-20 2 views
0

Очень просто, я получаю эту ошибку:неопределенные символы ошибки x86_64 архитектуры при компиляции

Undefined symbols for architecture x86_64: 
    "Tetris::rotate(int (*) [2], int)", referenced from: 
     Tetris::add_piece(char, int, int) in tetris-8a8072.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

вот моя функция поворота:

int** rotate(int oldpiece[][2],int rot){ 
    int **newpiece= new int*[4]; 
    for (unsigned int i=0; i<4; ++i){ 
     newpiece[i] = new int[2]; 
    } 
    for (unsigned int i=0; i<4; ++i){ 
     for (unsigned int j=0; j<2; ++j){ 
      newpiece[i][j]=oldpiece[i][j]; 
     } 
    } 
    return newpiece; 
} 

старый кусок является 4х2 массив целых чисел.

На данный момент все, что нужно сделать этой функции, это скопировать oldpiece в newpiece, а затем return newpiece;. Я понятия не имею, что означает эта ошибка.

+0

Если у вас возникли ошибки компоновщика, всегда лучше увидеть всю вещь, указав -v (как предложено в сообщении об ошибке) для подробного вывода. –

+2

Это определение внутри класса/пространства имен Tetris? Если нет, вам нужно квалифицировать имя «Tetris :: rotate», иначе вы объявляете новую, несвязанную функцию. –

+0

на данный момент я включаю '', '' и '" tetris.h'. Есть ли что-то еще, что я должен включать? –

ответ

0

У вас есть внешняя библиотека? если это так, вы должны связать его. Кроме того, попробуйте выполнить компиляцию программы по опции release вместо опции debug.

Смежные вопросы