C ++: Внешняя библиотека в CDT затмения - PullRequest
7 голосов
/ 12 января 2012

Сейчас я использую eclipse CDT для своего приложения C / C ++, но есть проблема, когда я связываю свою внешнюю библиотеку, она не может быть загружена должным образом во время выполнения, даже если я поместил файл библиотеки рядом с исходным файлом, дал путь к библиотеке, и это правильно имя.

каталог проекта:

  1. include (.h файлы)
  2. источник (.cpp. Файлы ..)
  3. Lib (libbozorth3.a, LSFMatcher.a)

Я хочу связать статические библиотеки с моим приложением. Я выполняю следующие действия:

  1. проект-> свойства-> общие-> путь и символы-> включают путь к каталогу и библиотеки (bozorth3.a, LSFMatcher.a) и добавляют путь к библиотеке.
  2. а также я добавляю ту же библиотеку в секцию компоновщика также

При сборке программы отображается ошибка не могу найти -lbozorth3.a не могу найти -lLSFMatcher.a

Так что мне нужны правильные шаги для добавления внешней библиотеки в приложение c / c ++.

Ответы [ 3 ]

12 голосов
/ 20 марта 2012

Я обычно настраиваю

  1. библиотека
  2. путь поиска библиотеки (необходим для компиляции)
  3. путь поиска во время выполнения (опция -rpath Linker)

(см. Изображения ниже и измените путь в флагах компоновщика на тот, который вы использовали в пути поиска в библиотеке)

Library Search path Linker options for runtime search path

1 голос
/ 18 июня 2014

вы должны использовать -Wl,-rpath=${workspace_loc}/Liball, а не -Wl,-rpath,${workspace_loc}/Liball.

Также в опции библиотеки -l добавить библиотеку, например, напримердля libgcc.a добавить только gcc

0 голосов
/ 06 апреля 2015

Следует обратить внимание на то, что в скобках: Другие параметры (-Xlinker [опция]).

Способ передачи параметров отличается.Вместо использования:

-Wl,-rpath,'${ProjDirPath}/../../system/lib'

Вы должны использовать:

-rpath '${ProjDirPath}/../../system/lib'

То есть удалите «-Wl» и замените второй «,» на «» (пробел).

enter image description here

enter image description here

...