好吧,我意识到这可能看起来像重复,但我已经通过搜索帖子尝试了大多数变体和尝试,但我仍然一无所获。这是问题所在:我正在使用一个名为 libxls 的开源 C 库,该库用于读取 .xls 文件(恰当地命名为 project.. :) )。我使用的代码直接来自他们的网站,本质上只是一个开始的玩具示例,以确保我可以访问这些库:链接到他们的网站和源代码
#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
嗯,嗯.. 看起来当然是对的,/usr/local/lib/ 是库用所有 .so 文件和我 PWD 中的 .a 文件创建自己的地方。现在,我是一名 Java 开发人员,所以我可能会遗漏一些明显的东西,但对于我的生活,我无法确定它是什么。这对我来说当然没问题。
我在 Linux Mint 15 KDE 32 位上使用 GCC (ubuntu/Linaro 4.7.3-lubunutul) 4.7.3。
如果您想重现该库以进行自己的测试或解决问题,可以从
我不建议在 Windows 上重新创建它,我昨天尝试了几个小时并放弃了,所以只需执行常规的 ./configure -> make -> make install 即可为您生成适当的库。
谢谢!
-将要
编辑#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(我知道扔飞镖),结果相同。