Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > xlsLib


Автор: Vicul 25.10.2010, 08:22
Помогите подключить эту библиотеку. 
Скажите, что я сделал неправильно.

1. Качнул дистрибутив http://xlslib.sourceforge.net/index.php
2.  установил его через configure/make/make install.  Хидеры установились в /usr/local/include/xlslib
3. Сделал Makefile

Код

INCLUDES= -I/usr/local/include/xlslib

test:  test.o 
    g++ $(CFLAGS) -o test test.o  -xlslib

test.o: test.cpp  
    g++ $(CFLAGS) -c $(INCLUDES)  test.cpp


clean:
     rm -f *.o test



4. Сделал тестовую пустышку

Код

#include <xlslib.h>

using namespace xlslib_core;

int main()
{
   // Get the workbook handler
   workbook wb; 
  return 0;
 }


5.  Компилирую и получаю ошибку

Код

make -k 
g++  -o test test.o  -xlslib
test.o: In function `main':
test.cpp:(.text+0x15): undefined reference to `xlslib_core::workbook::workbook()'
test.cpp:(.text+0x26): undefined reference to `xlslib_core::workbook::~workbook()'
collect2: ld returned 1 exit status
make: *** [test] Ошибка 1


хотя wordbook  должен быть определен, его хидер подключается  в xlslib.h

Код

// The defines are needed by the C library and OSX Framework Users
// The defines are needed by C++ Library Users

#if defined(__cplusplus)

#include <string>
#include <xlstypes.h>
#include <globalrec.h>
#include <workbook.h>

#if defined(__FRAMEWORK__)
using namespace xlslib_core;
#endif

#else // defined(__cplusplus)

#ifndef __OBJC__    // framework needs a more qualified path
#include <xlstypes.h>
#endif




Автор: GrayCardinal 25.10.2010, 08:59
В Makefile в строчке

> g++ $(CFLAGS) -o test test.o  -xlslib
надо не -xlslib а -lxlslib
"l" пропущена

Автор: Vicul 25.10.2010, 09:18
Цитата(GrayCardinal @  25.10.2010,  08:59 Найти цитируемый пост)
"l" пропущена


если ее поставить, то получаю

make -k 
g++  -o test test.o  -lxlslib
/usr/lib/gcc/i586-suse-linux/4.4/../../../../i586-suse-linux/bin/ld: cannot find -lxlslib
collect2: ld returned 1 exit status
make: *** [test] Ошибка 1


Автор: GrayCardinal 25.10.2010, 09:25
Значит лайба не так называется. Переустановите и посмотрите при установке правильное название.

Автор: GrayCardinal 25.10.2010, 09:45
Еще может пути к лайбе не прописаны в
/etc/ld.so.conf

Автор: Vicul 25.10.2010, 10:26
Называется она подругому - libxls. Но ее в /usr/lib нет, а есть в /usr/local/lib. 
Может перенести их туда?

Добавлено через 2 минуты и 50 секунд
Цитата(GrayCardinal @  25.10.2010,  09:45 Найти цитируемый пост)
Еще может пути к лайбе не прописаны в
/etc/ld.so.conf


 там есть   запись /usr/local/lib

Автор: GrayCardinal 25.10.2010, 10:37
Ага. Т.е. надо писать -lxls

Автор: Vicul 25.10.2010, 10:41
ЗАРАБОТАЛО!!! 

Спасибо !!!!

Автор: GrayCardinal 25.10.2010, 10:43
Завсегда пожалуйста smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)