Объектные файлы не содержат символов, которые должны быть там - PullRequest
0 голосов
/ 02 октября 2009

Это конкретная ошибка, которую я получаю:

libFoo.so: undefined reference to `IID_IFOOBAR'
collect2: ld returned 1 exit status
make: *** [/home/F.exe] Error 1

когда я пытаюсь проверить символы в моем объектном файле A.o

nm A.obj | grep IID_

В моем объектном файле 'IID_IFOOBAR' нет символов, которые должны присутствовать, поскольку он определен в заголовочном файле как:

extern const blahType IID_IFOOBAR

Я что-то упустил? Должен ли IID_IFOOBAR определяться где-то иначе, поскольку это переменная extern? Если этот вопрос слишком конкретен, я его удалю. Но, возможно, чья-то интуиция поможет мне здесь.

Ответы [ 2 ]

4 голосов
/ 02 октября 2009

[EDIT] Добавьте определение переменной где-нибудь (без extern). Внешние идентификаторы без инициализаторов не являются определениями - определение должно быть где-то еще.

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

Чтобы символ extern ly , объявленный , отображался в таблице символов как "неопределенный", вы должны использовать из библиотеки.

Если ваш объектный файл не содержит определения символа (в отличие от объявления) и не использует его где-то внутри своих функций, тогда символ не появится в таблице символов. С чего бы это?

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