图书馆没有正确链接/包括

时间:2013-10-08 14:43:55

标签: c++ c linux static-libraries static-linking

好吧,我意识到这看起来像是重复的,但我已经通过'搜索过的帖子尝试了大多数变体和尝试,而我仍然没有提出任何结果。这是问题:我正在使用一个名为libxls的开源C库,用于读取.xls文件(恰当地命名为project .. :))。我正在使用的代码直接在他们的网站上,基本上只是一个开始的玩具示例,以确保我可以访问库:Link to their website with the source

#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 - &gt;制作 - &gt; 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(投掷飞镖,我知道),结果相同。

1 个答案:

答案 0 :(得分:1)

请执行find your_folder -type f -iname xls.h,然后使用gcc -I /the_path添加xls.h的路径。因为您遇到的问题是gcc找不到头文件xls.h