2013-12-08 2 views
0

Я видел несколько других ответов, чтобы добавить библиотеку в мой проект C + = в eclipse. Я попытался добавить путь к компоновщику в разделе Разное с использованием -L "и путь к папке «и -l» имя без префикса lib в попрошайничестве и .so в конце » Я пытаюсь добавить библиотеку libxl, поэтому я использую -lxl (для libxl.so) и -L/home/имя пользователя/libxl3.5.3.0/lib/(расположение местоположения файла lib).Как добавить библиотеку в Eclipse C

Я также попытался дать его в меню Linker и добавить имя и путь в разделе «Библиотеки».

Я получаю ошибку, что:/USR/бен/Л.Д. не находит -lxl файл и он возвращает ошибку

Я использую -static для компоновщика, чтобы сделать исполняемый файл, который включил все ЛИЭС но когда я не использую -static проблема с lib разрешает из сборки, но все же, когда я пытаюсь запустить программу, я получаю ошибку, что я не могу открыть файл общего доступа libxl.so, потому что файл не существует. Как я могу исправить это?

+0

Скопируйте здесь команду компоновщика, выполняемую eclipse во время сборки. – erenon

+0

-L/home/platonas/Programs/libxl-3.5.3.0/lib -static - все это опции – kyrpav

ответ

2

Когда вы добавляете имя библиотеки в проект C++ в eclipse, не используйте префикс -l. Eclipse сделает это для вас, когда он вызывает компилятор. Например, если вы хотите библиотеку boost_regex, просто введите boost_regexнеlboost_regex. Eclipse сделает все для вас. Или в вашем конкретном случае, просто используйте xl не lxl. Вам также не нужен -, а не -L перед дорожками, как отмечает erenon в комментарии ниже. Обратите внимание, что вышеприведенное относится к методу добавления библиотек с использованием диалогового окна Project->Properties->C/C++ General->Paths and Symbols для добавления библиотек с использованием вкладоки Library Paths.

Вы пытаетесь связать статически с общей библиотекой. По моему опыту, я всегда использовал файлы * .a, а не файлы * .so, чтобы использовать статическую связь. Этот другой ответ Static link of shared library function in gcc, по-видимому, предполагает, что вы на самом деле не можете связать статически с файлами * .so.

+0

То же самое относится к путям lib, -L не требуется. – erenon

+0

Вы можете префикс '-l' или' -L' при предоставлении команд непосредственно компоновщику. Это делается из опций «Разное» – P0W

+0

. Я попытался дать ссылку -l и -L непосредственно компоновщику, а также я попытался выполнить раздел «Библиотеки» без предоставления и -l или -L. В разделе «Либерри» линкера, который я дал только имя («xl» без «) и только путь, который я выбираю из браузера, который появляется. – kyrpav

Смежные вопросы