好吧,我意識到這可能看起來像一個重複的,但我已經嘗試了大多數變化和嘗試通過'搜索帖子,我仍然沒有提出任何事情。問題在於:我正在使用一個名爲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(投擲飛鏢,我知道),結果相同。
當你引用your_folder時,你指的是庫所在的文件夾(假定.h文件確實在靜態庫內?)編輯:好吧,我試過找到/ usr/local/libxls/lib/-type f -iname xls.h以及/ home/wdaniels/documents/libxlsWrapper /(我運行此目錄的主目錄)並找不到任何東西。這導致我相信.h文件的可見性的確存在問題。 – WillBD
極端情況下,您可以'find/-type f -iname xls.h'。如果你找不到它,你做了錯誤的安裝。 –
它可以找到該文件,但只能在我編譯庫的原始源代碼中找到。好的,從理論上講,我仍然應該至少能夠聯繫到整個事情,以便現在能夠實現。所以,找到了/usr/local/libxls/include/libxls/xls.h的結果所以我proecceded嘗試命令:gcc -I/usr/local/libxls/include/libxls/-o xlsWrapper libxlsReader .c -L。 -lxlsreader -lpthread同樣的結果。感謝您的幫助,順便說一句,我知道很難在某人elses系統上診斷這樣的問題。 – WillBD