с / цель-с вопрос - PullRequest
       1

с / цель-с вопрос

0 голосов
/ 08 июля 2010

Я использую функцию c в файле .c из моего классаjective-c. Я импортировал заголовок для файла c. но я все еще получаю проблему, и моя программа не будет компилироваться.

Неопределенные символы:

"gluUnProject (float, float, float, float const *, float const *, int const *, float *, float *, float *)", на который ссылаются из: - [GLView checkCollission: object:] в GLView.o ld: символ (ы) не найден collect2: ld вернул 1 статус выхода

Есть идеи, как решить эту проблему? Любая помощь, безусловно, ценится. Qutaibah

1 Ответ

3 голосов
/ 09 июля 2010

Эта ошибка публикуется компоновщиком, а не компилятором. Часто это вызвано тем, что код компилируется как C и включается из C ++ или наоборот.

Обычно это можно исправить, убедившись, что определения функций в заголовочном файле заставляют любой компилятор C ++ использовать синтаксис C, добавив в заголовок следующее:

#ifdef __cplusplus
extern "C" {
#endif

... definitions goes here ...

#ifdef __cplusplus
}
#endif

Этот метод также гарантирует, что сам файл .c обрабатывает определения функций как C, а не случайно компилируется как C ++.

Если вы не хотите изменять заголовок, вы можете инкапсулировать оператор #include таким же образом. Это, однако, не гарантирует правильной компиляции самого файла .c.

EDIT: Просто мысль: я предполагаю, что вы на самом деле компилируете файл .c?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...