Eclipse cdt не может разрешить внешние объекты в проекте c ++ - PullRequest
1 голос
/ 17 февраля 2012

Моя проблема с проектом eclipse c ++, из-за которого eclipse не может разрешить внешние функции, пространства имен, переменные и т. Д. Пожалуйста, смотрите скриншот.

enter image description here

Большой

Так, например, jni тип jint не разрешается затмением, но, как вы можете видеть, jni.h включен и разрешен (я могу CNTRL + щелкнуть по нему и просмотреть его содержимое), я настроил все необходимые пути включают в себя, поэтому все файлы включены, как они должны, но затмение не разрешает объекты из них.

Где может быть проблема?

PS. Я новичок в разработке c ++ с eclipse, поэтому я могу что-то упустить, пожалуйста, помогите мне, я буду очень благодарен.

Спасибо.

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Вам также нужно сообщить Eclipse, где находится ваша библиотека JNI.

Если вы никогда этого не делали, см. Эту вики-статью .В разделе о связывании есть рисунки, стрелки и текст, которые должны помочь вам пройти процесс.

Несколько общих советов: научитесь различать ошибки компилятора и ошибки компоновщика.Если это ошибка компилятора, то вы можете искать отсутствующие включаемые файлы и т. Д. Когда это ошибка компоновщика, это означает, что он скомпилировал и нашел все заголовки просто отлично, но когда он искал фактический объект для ссылки на него, он не смог найти,Как правило, это означает, что у вас есть проблема с путем к библиотеке.

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

0 голосов
/ 22 марта 2016

Это происходит, как сказал Красилич, когда компоновщик сталкивается с неоднозначной переменной и путается при компоновке.

Я временно исправил эту проблему, когда столкнулся с ней, заново отредактировав заголовок переменной «один включает объявление extern», очистите и соберите снова, и компоновщик сможет легко определить и связать его.Но постоянное решение заключалось в добавлении пути к рабочей области / папке, который включает файл заголовка, в C / C ++ Общие> Пути и символы> Включает.

Возможное объяснение зависит от компилятора и компоновщика.Я попытался сделать это с GCC без проблем.Когда я использую частный компилятор, такой как GHS, эта проблема возникает с конкретными переменными.

...