Библиотека не связывает / в том числе правильно

0

Хорошо, я понимаю, что это может показаться дубликат, но я пробовал большинство вариантов и попыток через "найденные сообщения", и я все равно ничего не придумываю. Здесь проблема: я работаю с библиотекой C с открытым исходным кодом под названием libxls, которая используется для чтения файлов.xls (точно названный проект.. :)). Код, который я использую, прямо со своего веб-сайта, по сути, только начальный пример игрушек, чтобы я мог получить доступ к библиотекам: ссылку на их сайт с источником

#include <stdio.h>
#include "libxls/xls.h"

int main(){
    xlsWorkBook* pWB;
    pWB = xls_open("Book1.xls", "iso-8859-15//TRANSLIT");
    return 0;
}

Это. Теперь синтаксис этого в порядке. Я знаю, что благодаря команде nm команда xls_open действительно доступна как функция в.a-библиотеке, так что это не проблема. в моем каталоге у меня есть следующие файлы (помилуй избыточное именование, я просто пытался заставить его работать очень быстро):

Book1.xls
libxlsreader.a
libxlsReader.c
libxlsreader.so

Хотя я НЕ ДУМАЮ, мне нужен файл.so, так как я пробовал динамически связываться с тем, что живет, подумал, что это не плохой план попробовать. Хорошо, поэтому, на линии включения, я продолжаю получать общее:

libxlsreader.c:3:37: fatal erro: libxls/xls.h: No such file or directory

Хорошо, поэтому я, вероятно, неправильно связал в библиотеке, взгляните на мои аргументы строки компиляции:

gcc -o libxlsWrapper libxlsReader.c -L /usr/local/lib/ -lxlsreader -lpthread

huh, well.., что, конечно, LOOKS right,/usr/local/lib / - это то место, где библиотека создала себя со всеми его.so файлами и.a в моем PWD. Теперь я разработчик Java по профессии, поэтому я мог бы пропустить что-то явное, но для жизни я не могу определить, что это такое. мне это, конечно, кажется хорошо.

Я использую GCC (ubuntu/Linaro 4.7.3-lubunutul) 4.7.3 на Linux Mint 15 KDE 32-бит.

Если вы хотите воспроизвести библиотеку для собственного тестирования или решения проблем, ее можно получить из

Я не рекомендую воссоздавать его на окнах, я вчера пробовал пару часов и сдался, поэтому просто сделайте обычную. /configure → make → make install и вы получите соответствующие библиотеки для вас.

Благодарю!

-Will

edit # 1: вот некоторые из попыток соединения, которые я пробовал, все с одинаковым результатом.

gcc -o libxlsWrapper libxlsReader.c -L. -lxlsreader -I.
gcc -o libxlsWrapper libxlsReader.c -L. -lxlsreader -lpthread
gcc -o libxlsWrapper libxlsReader.c -L. -lxlsreader.so

Я также попробовал кучу с g++ вместо gcc (бросая дротики, я знаю), тот же результат.

Теги:
static-libraries
static-linking

1 ответ

1
Лучший ответ

Пожалуйста, find your_folder -type f -iname xls.h а затем используйте gcc -I/the_path чтобы включить путь для xls.h Поскольку проблема заключается в том, что gcc не смог найти файл заголовка xls.h

  • 0
    когда вы ссылаетесь на your_folder, вы ссылаетесь на папку, в которой находится библиотека (предполагается, что файл .h действительно находится внутри статической библиотеки?) РЕДАКТИРОВАТЬ: Хорошо, хорошо, я попытался найти / usr / local / libxls / lib / -type f -iname xls.h, а также / home / wdaniels / documents / libxlsWrapper / (домашний каталог, из которого я запускаю это), и найти ничего не придумало. Что приводит меня к мысли, что действительно существует проблема с видимостью файла .h
  • 0
    В крайнем случае, вы можете find / -type f -iname xls.h Если вы не смогли его найти, вы сделали что-то не так, чтобы установить это.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню