linux下C语言实现excel文件导入到数据库 动态库libxl.so用法
各位好:
我想实现linux下C语言实现excel文件导入到数据库这样需求。
我拿到libxl-3.6.5.0 官网提供http://www.libxl.com/ 仿照例子 我却不能实现:
源代码:Code example: extract data from an existing spreadsheet
#include <stdio.h>
#include "libxl.h"
#include <stdlib.h>
#include <string.h> /后来排错添加的
#include <wchar.h> //后来排错添加的
#include <stdbool.h> /后来排错添加的
int main()
{
BookHandle book = xlCreateBook();
if(book)
{
if(xlBookLoad(book, "example.xls"))
{
SheetHandle sheet = xlBookGetSheet(book, 0);
if(sheet)
{
double d;
const char* s = xlSheetReadStr(sheet, 2, 1, 0);
if(s) printf("%s\n", s);
d = xlSheetReadNum(sheet, 3, 1, 0);
printf("%g\n", d);
}
}
xlBookRelease(book);
}
return 0;
}
——————————————————————————————————————
我的makefile文件如下:
#编译路径
SETTLE_MAIN = /settle/jingy
PATHROOT = /settle/jingy
PATHMAIN = ${PATHROOT}/xls_test
PATHBIN = ${PATHMAIN}/bin
PATHINC = ${PATHMAIN}/inc
PATHSRC = ${PATHMAIN}/src
PATHOBJ = ${PATHMAIN}/obj
PATHDB = $(PATHMAIN)/db
CC=gcc
ARCH = $(shell getconf LONG_BIT)
ifeq ($(ARCH), 32)
LIBPATH = $(PATHMAIN)/lib
else
LIBPATH = $(PATHMAIN)/lib64
endif
CFLAGS = -I $(PATHMAIN)/include_c -L $(LIBPATH)/libxl.so -lxl -Wl,-rpath,$(LIBPATH)/libxl.so
all: $(PATHBIN)/xls_test
$(PATHBIN)/xls_test:$(PATHSRC)/xls_test.c
$(CC) -o $(PATHBIN)/xls_test $(PATHSRC)/xls_test.c $(CFLAGS)
clean:
rm -f $(PATHBIN)/xls_test *.xls *.xlsx
——————————————————————————————————————
目录结构:
总计 52
drwxr-xr-x 2 app_usr staff 4096 11-27 14:36 inc/
drwxr-xr-x 2 app_usr staff 4096 11-27 15:02 db/
drwxr-xr-x 2 app_usr staff 4096 11-27 15:02 src/
drwxr-xr-x 2 app_usr staff 4096 11-27 15:26 lib-2/
drwxr-xr-x 2 app_usr staff 4096 11-27 15:38 include_c/
drwxr-xr-x 2 app_usr staff 4096 11-27 15:38 lib/
drwxr-xr-x 2 app_usr staff 4096 11-27 15:38 include_cpp/
drwxr-xr-x 2 app_usr staff 4096 11-27 15:38 lib64/
-rw-r--r-- 1 app_usr staff 2160 11-27 16:33 clean
drwxr-xr-x 2 app_usr staff 4096 11-27 16:35 obj/
-rw-r--r-- 1 app_usr staff 2543 11-27 18:05 makefile-1
-rw-r--r-- 1 app_usr staff 619 11-27 19:28 makefile
drwxr-xr-x 2 app_usr staff 4096 11-27 19:28 bin/
[app_usr@jstest16 xls_test]$
出错信息如下:
[app_usr@jstest16 xls_test]$ make
gcc -o /settle/jingy/xls_test/bin/xls_test /settle/jingy/xls_test/src/xls_test.c -I /settle/jingy/xls_test/include_c -L /settle/jingy/xls_test/lib64/ -lxl -Wl,-rpath,/settle/jingy/xls_test/lib64/
/settle/jingy/xls_test/lib64//libxl.so: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)@GLIBCXX_3.4.9'
/settle/jingy/xls_test/lib64//libxl.so: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::basic_ostream<char, std::char_traits<char> >::_M_insert<long long>(long long)@GLIBCXX_3.4.9'
/settle/jingy/xls_test/lib64//libxl.so: undefined reference to `std::basic_istream<wchar_t, std::char_traits<wchar_t> >& std::basic_istream<wchar_t, std::char_traits<wchar_t> >::_M_extract<unsigned short>(unsigned short&)@GLIBCXX_3.4.9'
/settle/jingy/xls_test/lib64//libxl.so: undefined reference to `std::basic_ostream<wchar_t, std::char_traits<wchar_t> >& std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::_M_insert<double>(double)@GLIBCXX_3.4.9'
/settle/jingy/xls_test/lib64//libxl.so: undefined reference to `std::basic_ostream<wchar_t, std::char_traits<wchar_t> >& std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::_M_insert<unsigned long long>(unsigned long long)@GLIBCXX_3.4.9'
/settle/jingy/xls_test/lib64//libxl.so: undefined reference to `std::ctype<char>::_M_widen_init() const@GLIBCXX_3.4.11'
/settle/jingy/xls_test/lib64//libxl.so: undefined reference to `std::basic_ostream<wchar_t, std::char_traits<wchar_t> >& std::__ostream_insert<wchar_t, std::char_traits<wchar_t> >(std::basic_ostream<wchar_t, std::char_traits<wchar_t> >&, wchar_t const*, long)@GLIBCXX_3.4.9'
————————————————————————————
请朋友教我:1.libxl.so是否正确使用 2.编译出错基本原因 3.需求实现的其他案例链接
谢谢!