Я использую класс TPCircularBuffer для создания объекта кругового буфера из этот сайт. Это мой текущий код:
TPCircularBufferRecord bufferRecord; //1
TPCircularBufferInit(&bufferRecord, kBufferLength); //2
Строка 1 работает нормально, это означает, что компоновщик нашел файлы .cpp и .h для класса. Однако строка 2 не компилируется с ошибкой:
Undefined symbols:
"TPCircularBufferInit(TPCircularBufferRecord*, int)", referenced from:
StereoEffect3::StereoEffect3(ComponentInstanceRecord*)in StereoEffect3-1DB483EC8D75827.o
StereoEffect3::StereoEffect3(ComponentInstanceRecord*)in StereoEffect3-1DB483EC8D75827.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Я не думаю, что это проблема исходного кода, но я все равно включу его сюда: TPCircularBuffer.c
Кто-нибудь знает, почему компоновщик/компилятор не может найти функцию TPCircularBufferInit? Функция TPCircularBufferInit выглядит следующим образом:
inline void TPCircularBufferInit(TPCircularBufferRecord *record, int length) {
record->head = record->tail = record->fillCount = 0;
record->length = length;
}
Я почти уверен, что передаю ему правильный тип аргументов...
inline
из исходного файла. Встроенные функции действительно принадлежат только файлам заголовков. - person Kerrek SB   schedule 11.07.2011Boost.CircularBuffer
вместо того, чтобы копаться в этом плохом коде C. - person ildjarn   schedule 11.07.2011