2013-10-08 68 views
0

好吧,我意識到這可能看起來像一個重複的,但我已經嘗試了大多數變化和嘗試通過'搜索帖子,我仍然沒有提出任何事情。問題在於:我正在使用一個名爲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。

如果您想重現庫供自己的測試和解決問題,可以從

獲得我不建議重新創建它的窗口,我昨天試了幾個小時,放棄了,所以只需執行常規的./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(投擲飛鏢,我知道),結果相同。

回答

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文件的可見性的確存在問題。 – WillBD

+0

極端情況下,您可以'find/-type f -iname xls.h'。如果你找不到它,你做了錯誤的安裝。 –

+0

它可以找到該文件,但只能在我編譯庫的原始源代碼中找到。好的,從理論上講,我仍然應該至少能夠聯繫到整個事情,以便現在能夠實現。所以,找到了/usr/local/libxls/include/libxls/xls.h的結果所以我proecceded嘗試命令:gcc -I/usr/local/libxls/include/libxls/-o xlsWrapper libxlsReader .c -L。 -lxlsreader -lpthread同樣的結果。感謝您的幫助,順便說一句,我知道很難在某人elses系統上診斷這樣的問題。 – WillBD